{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业一"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "x = np.array([[1.2,1.5,1.8],\n",
    "                     [1.3,1.4,1.9],\n",
    "                     [1.1,1.6,1.7]])\n",
    "y = np.array([[5,10,9]]).T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7/28采购总额: 37.2\n",
      "7/29采购总额: 37.6\n",
      "7/30采购总额: 36.8\n"
     ]
    }
   ],
   "source": [
    "# 1. 使用循环的方式计算每天的采购总金额 得到结果为[37.2, 37.6, 36.8]，分别表示7/28、7/29、7/30这三天采购总额\n",
    "dates = ['7/28','7/29','7/30']\n",
    "for i in range(3):\n",
    "    tot = np.multiply(x,y.T)[i].sum()\n",
    "    print('{}采购总额: '.format(dates[i]) + str(round(tot,2)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 336,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7/28采购总额: 37.2 \n",
      "7/29采购总额: 37.6 \n",
      "7/30采购总额: 36.8 \n"
     ]
    }
   ],
   "source": [
    "# 2. 使用矩阵点乘来计算每天的采购总金额（使用np.dot来实现矩阵相乘）\n",
    "tot1 = np.dot(x,y)\n",
    "for i in range(3):\n",
    "    print('{0}采购总额: {1} '.format(dates[i],round(tot1[i,0],2)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "22.9 ns ± 0.313 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)\n"
     ]
    }
   ],
   "source": [
    "# 3. 测试两种方式的性能 10分\n",
    "def get_tot1():\n",
    "    x = np.array([[1.2,1.5,1.8],\n",
    "                     [1.3,1.4,1.9],\n",
    "                     [1.1,1.6,1.7]])\n",
    "    y = np.array([[5,10,9]]).T\n",
    "    for i in range(3):\n",
    "        tot = np.multiply(x,y.T)[i].sum()\n",
    "        print(str(round(tot,2)))\n",
    "%timeit get_tot1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "66 ns ± 0.787 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "def get_tot1():\n",
    "    x = np.array([[1.2,1.5,1.8],\n",
    "                     [1.3,1.4,1.9],\n",
    "                     [1.1,1.6,1.7]])\n",
    "    y = np.array([[5,10,9]]).T\n",
    "    for i in range(3):\n",
    "        tot = np.multiply(x,y.T)[i].sum()\n",
    "        print(str(round(tot,2)))\n",
    "\n",
    "# timeit.timeit('get_tot1()','from __main__ import get_tot1', number = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 问题：为何用 %timeit 跟 %%timeit 得出的时间不同?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 341,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "23.3 ns ± 0.361 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)\n"
     ]
    }
   ],
   "source": [
    "# %%timeit\n",
    "def get_tot2():\n",
    "    x = np.array([[1.2,1.5,1.8],\n",
    "                     [1.3,1.4,1.9],\n",
    "                     [1.1,1.6,1.7]])\n",
    "    y = np.array([[5,10,9]]).T\n",
    "    tot1 = np.dot(x,y)\n",
    "    for i in range(3):\n",
    "        print('{0}采购总额: {1} '.format(dates[i],round(tot1[i,0],2)))\n",
    "%timeit get_tot2\n",
    "# timeit.timeit('get_tot2()','from __main__ import get_tot2', number = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "67.5 ns ± 0.396 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "def get_tot2():\n",
    "    x = np.array([[1.2,1.5,1.8],\n",
    "                     [1.3,1.4,1.9],\n",
    "                     [1.1,1.6,1.7]])\n",
    "    y = np.array([[5,10,9]]).T\n",
    "    return np.dot(x,y)\n",
    "# timeit.timeit('get_tot2()','from __main__ import get_tot2', number = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业二："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 342,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6, 9, 6, 1, 1, 2, 8, 7, 3, 5, 6, 3, 5, 3, 5, 8, 8, 2, 8, 1, 7, 8,\n",
       "       7, 2, 1, 2, 9, 9, 4, 9])"
      ]
     },
     "execution_count": 342,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. 请将X处理为一个3列的矩阵，如下: 5分\n",
    "np.random.seed(1)\n",
    "X = np.random.randint(1, 10, size=30)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 343,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9, 6],\n",
       "       [1, 1, 2],\n",
       "       [8, 7, 3],\n",
       "       [5, 6, 3],\n",
       "       [5, 3, 5],\n",
       "       [8, 8, 2],\n",
       "       [8, 1, 7],\n",
       "       [8, 7, 2],\n",
       "       [1, 2, 9],\n",
       "       [9, 4, 9]])"
      ]
     },
     "execution_count": 343,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X1 = X.reshape((10,3))\n",
    "X1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9, 1],\n",
       "       [1, 1, 0],\n",
       "       [8, 7, 0],\n",
       "       [5, 6, 0],\n",
       "       [5, 3, 1],\n",
       "       [8, 8, 0],\n",
       "       [8, 1, 2],\n",
       "       [8, 7, 0],\n",
       "       [1, 2, 2],\n",
       "       [9, 4, 2]])"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 2. 将第三列中，小于等于3的修改为0、大于3且小于等于6的修改为1、大于6的修改为2，结果如下: 10分\n",
    "X2 = X1.copy()\n",
    "X3 = X2[:,2]\n",
    "X3 = np.where(X3>6,2,np.where(X3>3,1,np.where(X3<=3,0,X3)))\n",
    "X2[:,2]=X3\n",
    "X2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 3. 假设这是10条样本数据，前两列是样本的两个特征，第3列是样本的分类标记，请分离出样本的特征和分类 标记，分别存放在两个变量中，\n",
    "# 用 X_train 存放样本特征(红色部份), y_train 存放分类标记(绿色部份) 5分\n",
    "X_train = X2[:,:2]\n",
    "y_train = X2[:,2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 1],\n",
       "       [8, 7],\n",
       "       [5, 6],\n",
       "       [8, 8],\n",
       "       [8, 7]])"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 4. 请用numpy的比较运算，通过 y_train 中的数据，分离出 X_train 中的3个分类，如下图\n",
    "# 分类为0\n",
    "X_train[y_train==0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[6, 9],\n",
       "       [5, 3]])"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类为1\n",
    "X_train[y_train==1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[8, 1],\n",
       "       [1, 2],\n",
       "       [9, 4]])"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类为2\n",
    "X_train[y_train==2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 344,
   "metadata": {},
   "outputs": [],
   "source": [
    "# A = [1, 2, 2, 5,3, 4, 3]\n",
    "# np.unique(A)\n",
    "# np.array([1, 2, 3, 4, 5]).T\n",
    "# np.array([60])\n",
    "# np.unique(A, return_index= True)\n",
    "# np.unique(A, return_index= True, return_counts= True, )\n",
    "# np.unique(A, return_inverse= True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业三：服务器日志数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>api</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "      <th>created_at</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162644</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>162742</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>162808</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:03:07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>162943</td>\n",
       "      <td>/front-api/bill/create</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>60</td>\n",
       "      <td>2018-11-01 00:04:07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           id                     api  count  res_time_sum  res_time_min  \\\n",
       "0  2019162542  /front-api/bill/create      8       1057.31         88.75   \n",
       "1      162644  /front-api/bill/create      5        749.12        103.79   \n",
       "2      162742  /front-api/bill/create      5        845.84        136.31   \n",
       "3      162808  /front-api/bill/create      9       1305.52         90.12   \n",
       "4      162943  /front-api/bill/create      3        568.89        138.45   \n",
       "\n",
       "   res_time_max  res_time_avg  interval           created_at  \n",
       "0        177.72         132.0        60  2018-11-01 00:00:07  \n",
       "1        240.38         149.0        60  2018-11-01 00:01:07  \n",
       "2        225.73         169.0        60  2018-11-01 00:02:07  \n",
       "3        196.61         145.0        60  2018-11-01 00:03:07  \n",
       "4        232.02         189.0        60  2018-11-01 00:04:07  "
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1. 请将数据导入pandas中，加上列名，如下图所示.\n",
    "import pandas as pd\n",
    "log = pd.read_csv('log.txt', header = None, sep = '\\t')\n",
    "log.columns=['id','api','count','res_time_sum','res_time_min','res_time_max','res_time_avg','interval','created_at']\n",
    "log.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total unique value counts for column id is 179496\n",
      "Total unique value counts for column api is 0\n",
      "Total unique value counts for column count is 0\n",
      "Total unique value counts for column res_time_sum is 97748\n",
      "Total unique value counts for column res_time_min is 6043\n",
      "Total unique value counts for column res_time_max is 27798\n",
      "Total unique value counts for column res_time_avg is 353\n",
      "Total unique value counts for column interval is 0\n",
      "Total unique value counts for column created_at is 179496\n"
     ]
    }
   ],
   "source": [
    "# 2. 检测是否有重复值 5分\n",
    "def if_uniq(x):\n",
    "    cnt = np.unique(x, return_counts=True)[1]\n",
    "    tot_cnt = cnt[cnt==1].sum()\n",
    "    return tot_cnt\n",
    "\n",
    "for i in log.columns:\n",
    "    a = if_uniq(log[i])\n",
    "    print('Total unique value counts for column {0} is {1}'.format(i,a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 179496 entries, 0 to 179495\n",
      "Data columns (total 9 columns):\n",
      " #   Column        Non-Null Count   Dtype  \n",
      "---  ------        --------------   -----  \n",
      " 0   id            179496 non-null  int64  \n",
      " 1   api           179496 non-null  object \n",
      " 2   count         179496 non-null  int64  \n",
      " 3   res_time_sum  179496 non-null  float64\n",
      " 4   res_time_min  179496 non-null  float64\n",
      " 5   res_time_max  179496 non-null  float64\n",
      " 6   res_time_avg  179496 non-null  float64\n",
      " 7   interval      179496 non-null  int64  \n",
      " 8   created_at    179496 non-null  object \n",
      "dtypes: float64(4), int64(3), object(2)\n",
      "memory usage: 12.3+ MB\n"
     ]
    }
   ],
   "source": [
    "log.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 问题：除了检查资料形态之外，还有什么方法可以有效检查并清除异常值？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 179496 entries, 0 to 179495\n",
      "Data columns (total 8 columns):\n",
      " #   Column        Non-Null Count   Dtype  \n",
      "---  ------        --------------   -----  \n",
      " 0   id            179496 non-null  int64  \n",
      " 1   count         179496 non-null  int64  \n",
      " 2   res_time_sum  179496 non-null  float64\n",
      " 3   res_time_min  179496 non-null  float64\n",
      " 4   res_time_max  179496 non-null  float64\n",
      " 5   res_time_avg  179496 non-null  float64\n",
      " 6   interval      179496 non-null  int64  \n",
      " 7   created_at    179496 non-null  object \n",
      "dtypes: float64(4), int64(3), object(1)\n",
      "memory usage: 11.0+ MB\n"
     ]
    }
   ],
   "source": [
    "# 3. 检测是否有异常值\n",
    "log.info() # created at 栏位的形态应为日期"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>interval</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1.794960e+05</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.000000</td>\n",
       "      <td>179496.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>6.877739e+06</td>\n",
       "      <td>7.175909</td>\n",
       "      <td>1393.177832</td>\n",
       "      <td>108.419626</td>\n",
       "      <td>359.880374</td>\n",
       "      <td>187.812208</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>6.012494e+06</td>\n",
       "      <td>4.325160</td>\n",
       "      <td>1499.486073</td>\n",
       "      <td>79.640693</td>\n",
       "      <td>638.919827</td>\n",
       "      <td>224.464813</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.626440e+05</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>36.550000</td>\n",
       "      <td>3.210000</td>\n",
       "      <td>36.550000</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>3.825233e+06</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>607.707500</td>\n",
       "      <td>83.410000</td>\n",
       "      <td>198.280000</td>\n",
       "      <td>144.000000</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>6.811510e+06</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1154.905000</td>\n",
       "      <td>97.120000</td>\n",
       "      <td>256.090000</td>\n",
       "      <td>167.000000</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>9.981455e+06</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>1834.117500</td>\n",
       "      <td>116.990000</td>\n",
       "      <td>374.410000</td>\n",
       "      <td>202.000000</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.019163e+09</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>142650.550000</td>\n",
       "      <td>18896.640000</td>\n",
       "      <td>142468.270000</td>\n",
       "      <td>71325.000000</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id          count   res_time_sum   res_time_min  \\\n",
       "count  1.794960e+05  179496.000000  179496.000000  179496.000000   \n",
       "mean   6.877739e+06       7.175909    1393.177832     108.419626   \n",
       "std    6.012494e+06       4.325160    1499.486073      79.640693   \n",
       "min    1.626440e+05       1.000000      36.550000       3.210000   \n",
       "25%    3.825233e+06       4.000000     607.707500      83.410000   \n",
       "50%    6.811510e+06       7.000000    1154.905000      97.120000   \n",
       "75%    9.981455e+06      10.000000    1834.117500     116.990000   \n",
       "max    2.019163e+09      31.000000  142650.550000   18896.640000   \n",
       "\n",
       "        res_time_max   res_time_avg  interval  \n",
       "count  179496.000000  179496.000000  179496.0  \n",
       "mean      359.880374     187.812208      60.0  \n",
       "std       638.919827     224.464813       0.0  \n",
       "min        36.550000      36.000000      60.0  \n",
       "25%       198.280000     144.000000      60.0  \n",
       "50%       256.090000     167.000000      60.0  \n",
       "75%       374.410000     202.000000      60.0  \n",
       "max    142468.270000   71325.000000      60.0  "
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                           162943\n",
       "count                             3\n",
       "res_time_sum                 568.89\n",
       "res_time_min                 138.45\n",
       "res_time_max                 232.02\n",
       "res_time_avg                    189\n",
       "interval                         60\n",
       "created_at      2018-11-01 00:04:07\n",
       "Name: 2018-11-01 00:04:07, dtype: object"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 348,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 4. 分析api和interval这两列的数据是否对分析有用，如果无用，说明为什么后将这两列丢弃 5分\n",
    "if_uniq(log['interval']) #如前分析, api 和 interval 栏位里资料都为重复值，可以删去\n",
    "log.drop(['interval'], axis = 1, inplace= True)\n",
    "log.drop(['api'], axis=1, inplace= True) #优化内存\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 350,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                           162943\n",
       "count                             3\n",
       "res_time_sum                 568.89\n",
       "res_time_min                 138.45\n",
       "res_time_max                 232.02\n",
       "res_time_avg                    189\n",
       "created_at      2018-11-01 00:04:07\n",
       "weekday                           3\n",
       "weekend                       False\n",
       "Name: 2018-11-01 00:04:07, dtype: object"
      ]
     },
     "execution_count": 350,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 5. 使用created_at这一列的数据作为时间索引 10分\n",
    "log.index = pd.to_datetime(log['created_at'])\n",
    "log.loc['2018-11-01 00:04:07']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 349,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:00:07</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:01:07</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:02:07</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:03:07</th>\n",
       "      <td>162808</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2018-11-01 00:03:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:04:07</th>\n",
       "      <td>162943</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2018-11-01 00:04:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             id  count  res_time_sum  res_time_min  \\\n",
       "created_at                                                           \n",
       "2018-11-01 00:00:07  2019162542      8       1057.31         88.75   \n",
       "2018-11-01 00:01:07      162644      5        749.12        103.79   \n",
       "2018-11-01 00:02:07      162742      5        845.84        136.31   \n",
       "2018-11-01 00:03:07      162808      9       1305.52         90.12   \n",
       "2018-11-01 00:04:07      162943      3        568.89        138.45   \n",
       "\n",
       "                     res_time_max  res_time_avg           created_at  weekday  \\\n",
       "created_at                                                                      \n",
       "2018-11-01 00:00:07        177.72         132.0  2018-11-01 00:00:07        3   \n",
       "2018-11-01 00:01:07        240.38         149.0  2018-11-01 00:01:07        3   \n",
       "2018-11-01 00:02:07        225.73         169.0  2018-11-01 00:02:07        3   \n",
       "2018-11-01 00:03:07        196.61         145.0  2018-11-01 00:03:07        3   \n",
       "2018-11-01 00:04:07        232.02         189.0  2018-11-01 00:04:07        3   \n",
       "\n",
       "                     weekend  \n",
       "created_at                    \n",
       "2018-11-01 00:00:07    False  \n",
       "2018-11-01 00:01:07    False  \n",
       "2018-11-01 00:02:07    False  \n",
       "2018-11-01 00:03:07    False  \n",
       "2018-11-01 00:04:07    False  "
      ]
     },
     "execution_count": 349,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 6. 分析api调用次数情况，例如，在一天中，哪些时间是访问高峰，哪些时间段访问比较,\n",
    "\n",
    "log['count'].hist(bins = 20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnXfcHGW1x7/nLSkkIYUkJJQUAqG3EJBepSiIIMoVLKAoKOL1qsiNXlHsXFHRK4iCUlREpArSQWqob0ISUigJ6b33t5/7x8zsO7vv7O7s7uzOvLvn+/kk7+7slLOzu785c57znCOqimEYhlH91MVtgGEYhlEZTPANwzBqBBN8wzCMGsEE3zAMo0YwwTcMw6gRTPANwzBqBBN8wzCMGsEE3zAMo0YwwTcMw6gRGuI2wM/QoUN1zJgxcZthGIbRo5gyZcoaVR2Wb71ECf6YMWNoamqK2wzDMIwehYgsDLOehXQMwzBqBBN8wzCMGsEE3zAMo0YwwTcMw6gRTPANwzBqBBN8wzCMGsEE3zAMowB++eQ7PP/u6rjNKIpE5eEbhmEknd/+ey4AC649M2ZLCsc8fMMwjBrBBN8wDKNGMME3DMOoEUzwDcMwagQTfMMwjBrBBN8wjJrhir9N5bsPvhW3GbFhgm8YRs3wrxnL+euri+I2IzZM8A3DMGoEE3zDMIwaoWTBF5HdReRZEZkjIrNE5Gvu8mtEZKmITHP/fbh0cw3DMIxiiaK0QjvwTVWdKiIDgCki8pT72vWq+osIjmEYhmGUSMmCr6rLgeXu480iMgfYtdT9GoZhGNESaQxfRMYAhwKvuYuuEJEZInKriAyO8liGYRiVpL2jkzGTHonbjJKITPBFpD9wH/BfqroJuAkYBxyCcwfwyyzbXSoiTSLStHp1zyw5ahhG9dPa0Rm3CSUTieCLSCOO2N+pqvcDqOpKVe1Q1U7gFuCIoG1V9WZVnaiqE4cNGxaFOYZhGJEjSNwmlEwUWToC/AmYo6q/8i0f6VvtXGBmqccyDMMwiieKLJ1jgM8Ab4nINHfZd4ALROQQQIEFwGURHMswDMMokiiydF6CwHudR0vdt2EYhhEdNtPWMIyqZuO2Nra3dpRt/y3tHazb2lq2/UeJCb5hGFXNwT98klN++VzJ+1E0cPkX7mhiwo+eCnwtaZjgG4ZR9Szb2FzyPjRY73nxvTUl77tSmOAbhmHUCCb4hmEYIcji4PcoTPANwzBCoNliOj0IE3zDMIwQ9Hy5N8E3DMPIyfbWDqYuWp93vZ5wB2CCbxiGkYNv3Tudj/3uZVZtyp3p05l8vTfBNwzDyMXMpRsB2NKSe/JWp3n4hmEYPZuwMm6CbxiGUSP0AL03wTcMwwhDvkFZ8/ANwzCqhHxyboO2hmEYVUI+B948fMMwjBpBe0DLWxN8wzCMHIR13M3DNwzDqBps0NYwDKMmyB/Dr4wdpWCCbxiGUQJ1bkdvq6VjGIZRJWSTcxFH8c3DNwzDqBLufHVh2vMnZ63gc7e9Toer9P4Y/qbmNn70r9m0tJeveXoxNMRtgGEYRpLxmpc/OG1Z2vJL/zIl7blf8H/91HvcOnk+Y4f249NHji6/kSExD98wDCMC/CH89k4nKb8jYXEeE3zDMIwICBL3pA3kmuAbhmFEgD+kIzHakYtIBF9EdheRZ0VkjojMEpGvucuHiMhTIvKe+3dwFMczDMOoFBJSvoOiN8ny76Pz8NuBb6rqvsCRwFdEZD9gEvCMqu4FPOM+NwzDqDr84RsvVTNpRCL4qrpcVae6jzcDc4BdgY8Cd7ir3QGcE8XxDMMoHVXlC3e8wbNvr4rblIqzpaU9cPnLc9fw2Vtfp9PnrmtIP70jIF7vX3TlPdO5f+qSwgyNmMhj+CIyBjgUeA3YWVWXg3NRAIYHrH+piDSJSNPq1aujNscwjCyowtNzVvG529+I25SK8/LcNYHLv3znVF54dzWbmtsK3qdf3D0H338JuHfKEr7xj+kF7zdKIhV8EekP3Af8l6puCrONqt6sqhNVdeKwYcOiNMcwjBx4YpTQ6EMseAOvYeP2foIScqo2S0dEGnHE/k5Vvd9dvFJERrqvjwRq797RMBJK0sQoEZRwSvyhn2IuGJUgqiwdAf4EzFHVX/leegi4yH18EfDPKI5nGEbpeGHqZEpTPHiSHRSPz7ttD7h+RlVa4RjgM8BbIjLNXfYd4FrgHyJyCbAI+ERExzMMo0Q8jzSpGSVx4IV0Sq1tn9RTGongq+pLZHcUToniGIZhREtP8EgrTUrw/Vk6Ic9TcAw/Cquiw2baGkaNollCOlMWrmPMpEdYvG5bxW0qlXmrtzBm0iPMXLqx22s3Pjs37/beOTnip89w3RNvF3Ts9Bh+92VJwATfMGqUrpBO+vK/v74YgJfnBacuJpmnZ68E4J/TlnZ77bon3sm7vV+eb3x2XkHHDkrLTBom+IZRo3QN2iZUnYqgZKEtISwTtJqFdAzDSATVnJZZ7FsLGqwNe55qprSCYRg9j5Q8ZdGmnuj5Z9pc6EUtaO2wJe0DPfyCjl5+TPANo0ZRp0dHD5T18BTq6QddIMLm5KfF8Is8frkxwTeMGqSzU2npCO63mjCNKgrN+JuN5rYOtrW2p3rPBpY4Dq3aSnObe05TtXSSdTatp61h1CBX3jOd+990Mlmyhpt7oOuf+V5yifXm5jYOvObJ1PMF154ZuF7YkM7fX1/MPVNe4YVvnZTYcJh5+IZRg3hiDz0zVp8PT+dzafWGbekVMbNdHMLOun3kreUAvL9mSzc7koIJvmEYaSRNpIrBC6UU8l5a2jsDl3eGdPFTlTZFLA/fMIxkkk2cEqpZOclMhywkhp5N8MNeNDrdzesSfOJM8A2jxkmwPpVMQR5+W/AgdtgsHX8t/aSeUxN8wzDSSFpmSTEUE5bK5uF3FBzS8XW8Slh8zATfMBLOeys3FyQc+dafv2Zr2vNss0IXr9/O9tZgrzcfLe0dLMg4ThSoKu+t3Aw4KZUL12a8l27rZ9lPwDIvNbP7McPZlipV4TMiYXpvgm8YSeal99Zw6vUvcPcbi0OtP2PJBk69/gVufuH9wNfXb23lpF88l7YsW/jh/555j8v+OqUAa7v49v1vceIvnmPj9sJ7w+bijy/O59TrX2Da4g189a43OeG652jrCPbMIfvdStAFsbkty6BtgaotCQ7qmOAbRoLxUvxmLQvVIprF67YDMG3xhsDXt7S0F3T8F95dXdD6HpPdJuHF3iFkw3tfi9dt43nXNn/IpXsefvB+gqI02UI3BQu+38MvaMvyY4JvGFVEUemAyXRGA/E89jqRnOULPA8+m+AGiXh7VsEvzMY6S8s0DKMYKhED7qZNSXNLfagvTi4B5Qu6x/DDi3jYwdl8iFgtHcMwSqBQjzFpQhMV6QXKpNuybutn3U+Qh599LKAQ6oTUB5a0jCcTfMOoIoqK6OS4miQtNNEV0umyLbCGvfc3aww/oCpmRB6+/1NIlXhIyBXYBN8weihbWtp5/t3VqCqPz1yR3ni7AM8yPY1QedJtE+g8L8wmVeWJWSsiFM/M/XuPumL4ndp1LryLV2q9LGbMXLqJpoXr0pY96tbCKRV/SAecgeYl67dHsu9SsWqZhtFD+a+/T+PpOSv51ul7c90T7/D9j+zHyIF9gOJDOs+/u7rgTB4/T81eyWV/KS6VMwz+t9Ul7so37p7Ok7NXctnxe2SsH3wi/vTS/G7L7no9XOproZxz4+Sy7LcYzMM3jASTKxQwb7WTsulNPlqxsZligjr+LdZsaS14ez9rt5a2fT7SBm3dZZ0K77uTvLa5aaCe0JfpRiMn/o8sGYGcLkzwDaMHkEvGU4OXvmWFCE2U/VfLH6r26tWQOim58uTLFVrKjXaFyRISu/cwwTeMHorn/fv1OmmDrFHT5eH7Y/jZRTWOwdJODb4IJ4FIBF9EbhWRVSIy07fsGhFZKiLT3H8fjuJYhmGkU6rI+zcvVSDLfcHxrHMyH7sGaLPV0IkrpJPUC29UHv7twBkBy69X1UPcf49GdCzDMALwi3Uhuh1lKYByO9T+u5pcaZkeYUsbR0lnkZ9DJYhE8FX1BWBd3hUNo4ZYsGYr/2gqLPNjzvJNPDx9Wc51OjuVi297nQVrt7lLuhT7b68tKtTMtO3DKP70xRt4YtaKwNeenB28vFhen78uVTMHfB5+xqCtJ/4Puq0bvfXCdqvKxn1TlhS8zXPvrA41dL61pZ2bnptX0XGGcsfwrxCRGW7IZ3DQCiJyqYg0iUjT6tXFFWoyjCRy9g0vcdW9Mwra5kO/eZGv3vVm6nmQFDw1ZyXPvdP1W/E6LK3d2pomjuXiozdOzpp66bcLSp9pev4fXuGiW1/v2p8Xw0dSIR2/qG92U0q7JjyVdHi+ec/0grf5/fPzUo9zvf+fP/42//v425Hl/4ehnIJ/EzAOOARYDvwyaCVVvVlVJ6rqxGHDhpXRHMOoLJuai89nz8SfSdOc0Zmpzn0t3VMsbuJV1EQd0vDNu0qrV5OtHHEcIR3wN0DJvo53ccrWeKUclE3wVXWlqnaoaidwC3BEuY5lGEmm3JkiYcQl5/a+x1HXfon6nadi+ISL4Rda2jgqUgPKsRw9O2UTfBEZ6Xt6LjAz27qGUc0Uozm5mnpkEuTbFqtzkXvkZRJcR1DdkE7gMdyJV7Hk4SeXSEoriMhdwInAUBFZAnwfOFFEDsE58wuAy6I4lmH0NDpVqStwBmxLeyeN9YX5Y2nZIQVsly9LR1WLnpwV/QXE+Zvu4WcPS5nepxOJ4KvqBQGL/xTFvg2jp1OM5rS0ddC/d0MowexWMKxA/PHv4GYiycsrT685H1AtM5WHH6/iV2VapmEY2Qn60Xd2Ktc8NCvVkDsTL9vFv+lPH53DzKUbsx5nxtKutoZRhlKyieYDbzopi/+asSxrOmhYMxas2cp3H3wrb4piWrMTV/F/9dS7vL0i/Tz+3e0BHE9pBXjHtefegLTOSmblZGKCbxhlJkgwF67bxu0vL+CLf24K3CYzHbClvYObX3if8256udu6nvB5/WwLpb4ut/ueTTK/frdj4xV/e5PvPPBW4DphPewv3zmVv766iDnLc/fu9XqUOC0OHbsfm5k99z8uD/shdy7Fmi0t3V67/M6plTYnhQm+YcSANyjbEDJOn8o5L4OC9W7ssiEoS6eUY4bd0htczXfx8fDH8HPuN2kxlZgxwTeMMhMkOq1u7nWvkIKfqzZMYNw9tHXpNmSL4RdL2NCSd47q8qh4rv61QcSVh59UTPANo8wEaU6r6+H3aggr+M5OyhGT7t1Y33WciPcddn+eMOe7/qVVywzh4ieltWBSMME3jDITJDlhPfxKCFbvPDaUFNIJualfyHOuh7deuP1aWmY6JviGUWZyhXQaG8IpVy7hDBK/QjQ6311GadeccBt7dy71+ZTct7swoh9Xlk5SMcE3jDITJJjeoG3YGH7uJh+5t93c3MYRP3mapgXr+FhAls9Lc9dw+Z1TGDPpEf788oLu+8dJm5zwo6d4322rGJZctj321nJO+sVzdHRq3hj+Oys2M+FHT/H6Aqcob5hB26YF6xI7aDtm0iPcP3VpxY9rgm8Y5SYoD99dlm+QMscuQq8/ffFGVm1u4fqn32X15u5pggCPvuWkNr63qrugd6pyd9Ni1m1t5YZn5xZtRyZX3TuD+Wu2srW1PZWlk+103DZ5Put8/XKV7AXTPK5/+t3ETXyKGxN8wygTuYp7FTpxtVDh8sf+O0JmwOQ6tncnUmiIJKzd3m6zrZ8Z2w8z+7ezs7iQzsG7Dyp4m56CCb5hlJkonMxSqlh6F5yim5VrV5y/YMEPG8N3bcy2fpDp+d5Np2pRIZ36hJWRiBITfMMoM4G1XgreSWH7D9o25JymbnSq0lgfVHM/P+GzdDTn+t161pK/oJsWcHw/YSd/9URM8A2jTPhb8GVSaLplKXcJKQ+/yO2VrpBOexkEX7XrQpJt9W7hKM3/flS1qJBOsaGvnoAJvmGUmeByBd5r4ciZpZNnWy8FtFgh61Sl0Q3pFFKnH/KEdHzmdMXwg9cPdLrzZXBqcXMIzMM3DKNgcpctdha++N5qxkx6JG+6o38fX/v7tLzHfvG9NYDThPvLbrGuuiKFzD9o21pgOz5VmPjjp7nwllcBuOre6YyZ9Ah3v7EodfE4+AdPsnF7m7M+TsridU+8nbafO15ZmL5f8nv4HapFTbzaqX/vwjfqIZjgG0aZ8PdczcRb1tbhPGhauD7nvorNw396zspu9hSKoqlB22L6r67Z0sLL89YC8I8mp1zwHS8vpLmt+76893Ljs/O6vZa5Xr4YfmeRHv7hYwYXvE1PwQTfMMpMrpCORzbpCtcAJcexfduXkpbZUFe8hx+4PPsWofedN0uns7gsnaKzmQI4dFSyUjxN8A2jTPhb8GVSaJplsYO2/uPUFflr92tmS3tH0ccPQ9gQjJOlk3sdZwZvQYcHis9mCiJpowEm+IZRZnK14PPIm2JY5JRR/2ZF96Wly1MuNKRTqNlhs2pU88+07VQtqol5vv0WtK+EZfyY4BtGmQlscZixMH+KYXGv+Sk+S6fL3paAuHsuCpXbQkIw4Tz8YtIyC96kx2CCbxgRoKrd2tl5nqKnOV4dm5b2Dt5fvTVt3bkBWTprffsLapWXj/lrtqblzW9vbS94HwDrtrSyvdUJ5azY1FzQttnuTLa2BNviZetA7vDR0g3bWeurrRNEsVk6Uebhh9nT+q2tbNzWln/FCDDBN4wIuPuNxUz88dPMWta9ybiivDxvDYf/5GmemLWCw370NL955r20dW56bl635taH/fjplMC+sSB7Fk+2OPlJv3iOf7+9KvX86TmrAtfLx0dueIlJ9wf3rM1HNr1dtG5b4PILb3kt9fiInzyTdb/fvv+trIXgPDo7iwvpRBl4D3Pt+Mmjczj4h09Gd9AcmOAbRgRMdtMO5wZUm1SFNxdtAGDa4g1syeLdNgWIej5RSzqlVKv0e/vF0FFkLZ3GKi6mY4JvGBEQGLrwVctsCdHhKuilMPHkZJcAjs+4zs7iOl41huxREDVF3Y0UiAm+YUSA91MNyspQfC0Nc3SXCpoJm7Qsj0KJ82LU0alFNTFvKDZ/tURaCyxbUQyRvDMRuVVEVonITN+yISLylIi85/6t3ulrhuHqil+eu2baaqqMQO8cgh/U3i+M3CfZwY/Ttg7V0Oms/vo5vUK2nQxDISmehWZAFUNUl7LbgTMylk0CnlHVvYBn3OeGUdX4Ndt7rOrrYZsjXBCUHWIefvEUMmjrv9jG5eEXOqmtGCJ5Z6r6ArAuY/FHgTvcx3cA50RxLMNIGjOWbKC5LfuPtUOVV953BnX/OS17H9Nii5tNzVOHp5y8PHdN6vHm5u6DrMVOGIuCtVtbQ5dz9mt8pDH8Aj7SYuoUFUpDGfe9s6ouB1DV5SIyPGglEbkUuBRg1KhRZTTHMKJn1aZmzr5hcuBr3u38Tc/NS2XvTHWzdYL414xl3ZaFEcy3V2wOY2pZuPCPXWmUn7319W6vxx1umroo3MXQ7+HnytIZObAPyzcWNhchLD3Gwy8FVb1ZVSeq6sRhw4bFbY5hFMTmjBTLoJjtOyEFecn67d2WFTPoGBdvBlzM4jbfmzAWxFC3DPIDlx+ddncV5OH/x8TdmfWD07n46DHdXps86eSsxyjknq0S56qcgr9SREYCuH+Lm/VhGAmme02c7uuEzQUPStmsQKZeWSmlF28UdOQ8vPNi74b6tEHbhgAPv75e6Ne7IfDzHdCngYYI6jFU4kyVU/AfAi5yH18E/LOMxzKMxJGrWmYQQZ2WKpGbXVZiNr+jM3tc3Du1DfWSNmAe5OF71+yggfU6kazlGAoZcy9mklihRJWWeRfwCrC3iCwRkUuAa4FTReQ94FT3uWFUNUG/77A/5CBxKKYna5KI2/pc58/7XOrr8gt+rndSJ2SN3RSSllmJkE4kg7aqekGWl06JYv+G0ZMJ66UHeYk9KYYfRNzmt+eI6XifS0OdpM1yDgrP5HofElFB5Z4ewzeMmmX+mq1scwcMwzrp6wKqP/b0kM79by5JPb7j5QUVP36u1pHeqa2vk7QsnaDZ0N7dQNC8CJFoKmwuWLs1/0olYoJvGCWRUdfe/d2f9IvnUstKCcuEzSOPmm+eOj6S/dw/tWvewfcfmhXJPqPgi8eNTYl4Q10d3zxt79RrQR7+6fuPAIIjN3UiBcXqs3G522y+nJjgG0YJdL8NDwoHFC/accXwv3rKXrEctxQuOmp04PKzDhoJwP677AjA2Qfvwv+cuV+X4NcL5x22W2r9xgwP/5OH784p++4MBI+z5PLwMxfvObx//jdSRkzwDSNCgn73pUh2e44sEyMcvRvqAVKzoesysqcyPfrGHKUVsnr4IW2JIn2zFEzwDaPMlBTSyZ1IboSgT6Mjc81ucTLPG1dflo6fzJm2+foCS+q/7mSuHpR6W0lM8A2jzJQSlWnr4YO2lSTbmerTmO7he6Ld5eGny2AuUS40pJOJefiGUUUE/ZxLieG3V6BGerXjlaTe3i2kE+zh56pQGvSK5Bi0zQz2NMTUXMWjqgT/mTkruW3yfM78vxd5Zs5KAOat3sIfnp8Xs2VGrfDHF+d3a3NYSi79rGWbSjWp5sn08LtCOs7r+bzutPIQ2QZns2yb2Xw+qOdBJakqwb/kjiZ+8PBsZi3bxCV3NAFw/u9f4WePvc221uA+ooZRCplS/vqCdZz7u/TqmT01l/6rJ+9JX1csewLZrqsfOXgXDtl9EJcePw7oKoV82+cO54P7Dk8VTrvxwgmce+iuOY+RTa5v/NSEwOWLfc3adx3UlxED++Tcf7mpKsEPYqsJvVFhNjenf+eikvvbPnd46vFlJ+zBfV8+KnC9QsLE+47cMetr3zxtb75y0rjA1wbt0Bj+IDHw1NePTz0e1LeRB79yDLsN7gt0hWxO2ns4f7yo65yeedBIrv+PQ3Lu13PQLzhi97TlR48bGri+99k/+fXjmTzpZE4YH29F4KoXfO+qH83kZ8MonKg8/PT2iTkKuBS5z0KIYmZpOfHH4TOzcgodN03L0inwjHWmjulsF1MzrRTVL/hxG2BUNWHC81HVw/GLmEj2SoyFHC2fbmczPeZkk0D8sXZJvzoCXemxUTh/YT/Sriqb3l+L4ZcX94RXovSoYQQR1dwpv8jWSXbvvJCverH6k/Reu3VpHr7ztzNDfMPiP53+PsWhtvXV63G2N8GvCCb3RlxE5Wz4PVNBIhGPfN5utkMk0cP347fPO0/ep1Bo7+D0kI67LKSieOt5FyDL0omAba3tHPfzfwe+5p3wz/zptZyNpg3Dz9OzV/KzR+fkXS/MDz+qAmjpIhZFBD+/h58tbzzu0EQ+0i+ODt4E2qDOYqH3W6KHH/eFsioEXxUWr+veD9R7DZx+m9MXZ28gbRh+/v3OKv7+xuK4zUgnQyzG7zyAfUfuyMG7D0otK1TM8k31v+ioMRyy+yAmfWiftOVJFHz/jFm/eZ6tnzxiFJ8/ZmzBheHSxgZ8H8LVZ+3Hw1ccm2fbdBsspBMBYb98bVaXxAiJKqHuCCs5NJTptfbtVc9jXzuOf37lmNRyrzJkWHoH1H7307dXPQ9+5Ri+dEJ6ema2n1xmHZpK4j+2ZNwNgTMB63sf2Y/+vUvo++R5+MAlx47lwN0G5lw9laXjnmbz8CMgl977f49tNk3dCI3S0t6ZtyxCJQU/TSyyfOkLHS/o1VDcxKpsTlacxcH8rQnLdQfi7TXseU6FdLy0TPPwSyfXSfT/YE3wjbB4mTWteb4zYQfvoiAtLTPLOoUOF+Tz8LORTdczC5FVEn+nqvQsnRJFNk+1zDB0ZemUZkqpVIngh1svru5BRs/DE/KW9jyCX8mQTkCYIpNCPfziBT/YgDhDFn7BD3OuSqLAzz3u2L1HlQh+Dg/f99g8fCMsnm62tCXnO5OWpZPFxy/0AhTUvzUM2X5ycVaD9A9Ypwl+hMfwPoNCr/Oehx/3dKASRi+SQ7a82hUbm9NOsA3aGmHxbgZb2tMHbjs6lX2/9zjXfGR/Fq7dyh9eeL+CVuWXrk5Vdt6xNys3teRdF2DYgN5FWZLEGP6Qfr1Sj6MM6Qz27bcrLbMwLYk7/96jKjz8bLw2f23ac5tta4TFC+k0Z3j429s6aG3v5MePzK6w2IcP6Txw+TF85sjR/P7T6RUcf3zOAWnPrzpjb75w7B6hj//0N7oKkmUT9jgafNzzpaM4b8JunHNIV6XLEOPbofjpuQfyrdP37rY8SEnu+dJRfOPU8Tx75YndXsu0oU9jHSN2rHzlzKrw8LNhAm8UTRYPv9WN6cfhydaFGLRVhV0G9eVH5xzA3FWb01779JGjmbN8E3e+tgiAy0/cs6Dj7zl8AEP792LNllYasqRfxnFeDh8zhMPHDElblnauSlD8Cz8wKu25F0oLkpYgOzxSIR33+THjhnLDhRPY93uPp9Y5bPTgou0MS1V7+Kb3RrF4zkLmoK0n+KXM1iyWMF6rPy+hHDkKXgGy+izZOHH3bPUoW1pmsTH8DHtEuo+fVOLMld3DF5EFwGagA2hX1YnlPqaHJeUYxeJ9dTIHbT2PP5uHW07CeK3+2HJQ8/RSddDbZ7bQTVJi1eVWz0Jj+EHjjHFcHCsV0jlJVddU6FgpMj+UUnqLGrVFtkFbz+OPI988jJb6w5jlCGlmTiTKJCl6Xy4tzSzEVihxa1BVh3QyPZzW9k46OhVVpbmtI/aTbySLjk5NNSvxvhuZg7ZeN6s4PPwwpIV0ypBR6tX2z3a9i3smqUe58t6j22s856kSgq/AkyIyRUQurcDxUky6/62051f/cxbjvvMov3nmPfa5+nEm3fdWli2NWmTcdx7lU398DfCFdHwe/kPTl3HeTS8DsHDttszNy45fTHcfskPgOuN37p96vGPf6G/gvbuGbHc4B+yau7ZMpShXtlDqIwjpK+41vH/+lSpIJUI6x6jqMhEZDjwlIm+r6gvei+5F4FKAUaNGZdtHpPz1VSdL4e6mxfzvxw+qyDGNnsEr7zupvBowaPv4zOUVseGWz07ki39uSj1/4VsnUVeX3it94hGjAAAbjUlEQVT3IxlF0p678kSmL9nAhw/sWj56p37cevFEPn97E4Xw6xx9Xb27hmxzX372sQN54M2lOfd/xNghvD5/XUE2AfzjsqMY0q+RjdvbqBPh3N+93G2dV799Cltb2+lTYvP1yZNOpi1glrWXpZMvXPbiVSfRqcrAvo0s3dBVyTdzq6e+fjzvrtzCV/42tSR7w1J2wVfVZe7fVSLyAHAE8ILv9ZuBmwEmTpxYkRiLhXKMfKRm2uYprRAV+4wYwNIN29nc3M4RY9NT+0bt5Hjzb6/YlFqWGbIYM7QfY4b267bfw0al7ytXw5PDRg9mysL17JwjP7xDcw/ahhHaTx85OiX4h44axJuLwpUtHzmwT+rOZltre+A6IwZGk9u+66C+gcvDRor8d2CDdujV7XVvP3vtPID129oK2ncplDWkIyL9RGSA9xg4DZhZzmOGIaoeo0b10lVaITlNc4qKjxewSZgm355nW0qGSaNv20Lek/+YUfSlLYZURKeHSki5PfydgQdcb6QB+JuqPp57k/LTafmaRh6y5eHHSRQSF0Zfcw145svSCUO6cIfHf1cR19iwd9xiM6DivlCUVfBV9X3g4HIeoxhM7418dOXhd3n4FfuxZjlOUQ5+mbapLyFLqb5I4a5LgOBHlV0Tl/lVnZaZjS0t7WmPV2xsTnt97ZYWNmxrrbRZRoLIjOG3dXSyaF15M3PyiUAxqYaFbNHVji//upF5+IWEdCT+kI5Hqdd+//aVHFOsScH3c86NkznyZ8+kLTvsx09zyA+fiskiIwlkZul8/6FZzFq2KdcmJXHyPsP50AFOhk3vxugah2cKarY9HLDrjqnB4gF9GrPu7/T9dw5cXkiZZb/gnzB+WOjtkuDhp8ojF6nRY92B9aPH7dTttUpcxKq6eFoY5q7aErcJRgLoNivb/evl4T85a2XJxxg1ZIdudwn3X340wwf0ZuTAvnSqcuXpe9OnsZ7p3zuNlo4O+vqyXorJLQ+zxZtXn0rfXvXU1wmfOGx3xg3rnu3j8dsLJrC5uY0fPDw7teyuLx7JoaMGsb3VOVcXHDGKu15flHUffk/9yyeM47on3gGclEq/8/X0N47ng79KJfSlx/BDvK9yIIUm4mew94gBvPrtU9h5x+LKUpdKzQu+YUD3WdmpQVt3pm22NMBCGNCn+89twqiuCon1SKo+/cAdGoF0T7uYzJhMTzgohOKv975nnolCvRrq2Kl/7zS522VQH/o01qdSMof0y36HAOnvw++1jxjYh0E7NLLBTVPcY2j/rNvF3UGqlChMZupoJYcUaz6kYxjQvf2l94Nudj38ba3xp2dGMXs0qnixfz+ZoaZ8SRG5Lly5KoKmNzXJa2JZKM2/jx8TfMOgu4efrVpmnBTl4Vcg+JEpzPlSFrPN0nX2ld2LT4KHX2zHq5z7jGxP+THBNwyCPPzk5eEXU6EzTEinGPxnq9tgch4tzHWnkuualoRS+8XWw8+FhXRiwMot1DZ+D//dlZtTIZ1pizewOKJ0zFK1tpTc93KS+b6C6vD7yZ1tFM77j4tcHa8i2HnZMcF3yfclNaqb7b4JVqdd/0Kqp+2WlnaO+/mzkRzjgiNGcdjowalm2588fPeCti8qSydjk9PctMqh/bvXdymEjx68S9bX8v2Udh+cXulzv5E7prJWotT0MzMKzEXBPiMHAHDeYbtFts893Kyo8ycW9n0ohqrM0vnSCeP4/fPzCtqmvVNpKK3AntGDWb25Je15qbXkhw/ozev/80FUlZb2zlQGy6c+MLrofUbRIenocUNZcO2ZJe/ntP1HMHxAb1Ztbuk2TqABQYpzDtmFX3/y0MB9Pfq141KPvbf44lUnlWzjjRdO4MYLS95NGiMH9o3k/PkZPqBP5PvMRlV6+O0dhf9azcOvbTIFP0i0CsETZxEpuVRvap9FzbSt/KBtULgj7MQsz94ERG+qkuoU/CLEu70jvdORUVt0E/wSvwbl6FeaK7slG+UUzmynKChLpzFk03fP3iTE66uRqhT8Yrz1dvce3jz92mTV5vR6SkkU/GKohBWZxyjFw/cGdK2ibXmoTsEv4tfqCX0xdwdGz6dcIZ248TzlcjjM2X5mQR5+6JBOMk5b1VKdgt9R+I/183e8QXNbB62++P/VD87klXlOy7t5q7fwj6bFqdfuaVrM9MXhOvXEzbbWdl6Zt5bfPTeXZ+aUXhOmJ7NiYzN/eWUBADOXbuT7/5zJ7ZPnsypD8N9YsL6k45RSTbLn4P7OQqTh9y4wpFNsvXkjN1WTpXPlaeO5/eUF7NCrgbMP2YX5a7cW1Ddz5tJNvDZ/HQf6mjD/5dWFLFi7laPG7cQN/57LA28u5YwDRlAvwrfunUFDnfCN08bzpePHFRVfLQeqyuJ125myaB1TF25g6qL1vL1ic+oOZp8RAzhl3+CKh7XAbS/P5w/Pv8/ZB+/Kna8t5K7XnYv4PiMGRHqccnn4B+02kLNzpERmUiew2+C+/NcHx0duyw8/egA/eHgWgzNa+GWOg+3Qq56PTUhPY7z6rP24b8qSbvv83ln7850H3urWZjGz7aNRHFUj+FecvBdXnLxX6vkxew5NPR4z6REAFlx7Jnv9z6O0ZbkDmLtqS7cf/urNLahqytOfvWwTo90eozvv2IefP/4Ok+eu4frzD2F4jl6g5WJ7awczlmxg6iJH3N9ctJ41W5xa/v161XPIqEFcfuI4JowazJ2vLWTe6q0VtzFJvLnQuStrbu9IVXcEeHvF5kiPUy7Bf+iKYwtaX0R46b9PLostHz5wZFrTdA9/Smt9nTD7h2d0W+eSY8dyybFjuy0/db+dOXW/7g7JPy47qjRjDaCKBD8sDXV1tHUEF8Kau2oLbRkpnas2t7Bg7TZWbHIG9WYt25TyaL7z4X3Z0tLGNQ/N5ozfvMgvP3EwJ+0zvGy2qypL1m93hX0DUxauZ87yTalxh7FD+3H8+GFMGDWYw0YPZvzOA9KE59G3ltPSVr6a7kmntb2T6UscwW9p6yxr2YQoCp31VPzjH7V7FpJJzQl+Y72wvS34tXmrtnTz/tdtbeWFd1cDzsDTrGUbU2GfgX0bOfOgkRw2ejBfvWsan7v9DT5/zFj++0N70zuCWVzNbR3MXLqRKQvXM3XReqYu2pAaXOzbWM/Buw/kshP2YMKowRw6qmsGZzZ6N9YlqjZMpZmzfFPq/Te3d9DS3smug/qydMP2yI+VlBBfHFjeQ3KpOcHPlS0wd/WWwElbD09fxogd+7DPyAHMXraJTe4VY8e+zunbc/gAHrj8aK597G1unTyfV99fy28vPJRxw3LXFs9k2YbtaeI+e9nG1AVo9E47cOyeQ5kwahCHjhrMPiMG0BByIMyjd0N9TQv+1EVdA7GOh9/BiIF9WLmpOfLsrNoYtA3GBlyTS80Jfq6Kg+u2trJyU0u35U0L13Puobuyy6A+vPjeGlZvcdYZ2Ler0UOfxnquOXt/jt1zKN+6dzpn/d9L/OCj+/OJw3YLnETS0t7BzKWbeHORK/ALN6TCRn0a6zhot0FccuweTBg1iAmjBzO0f+kdcno31KU6ONUiUxb6BL+9g5a2Tvo01jGwbyNrt0bbwzgpaZmxYHqfWGpO8Bsbcv8Qr3l4Vupx38b6VFGto/bYiQF9GujoVG7491wAdgzo/fnB/Xbmsa8dz9fvnsZV987gzlcXdusRurmlnTnLNqVSQHcb3Jcjxg7hsNGDmTBqMPuMHBB6ZmIh9G6op61D+dQfX429CXQcTFu8gWEDerN6cwvXPDyLBWu2ccTYIQzp18sEP0LMw08uNSH43z1z31QGzReO3YPHZi5n9JB+3N20mCPGDmGfEQPYZVBfXnt/LZua2xm90w70qq/jP0/Zi39OW0pLeycf3G9n6kU4YfwwtrS0c/iYwWkevp8RA/vw1y98gFtefJ+nZq9Mq8QITvbM544Zw6GjBjNh9CCGD6hMds9x44cyed4amhPU1KOS7DtyABcfPZZ/NC1mS0s7e48YwIcPHMkOver522uLOHHvYTz3zmpa2jtYuHYbXzlpT+6buoRdBvZlQJ8G+vdp4JEZyxm90w68sWA9J4wfxpB+vejTWM9O/XqxenMLlxw3lt8/P4+vlyENsqfw7Q/vS6c66ZjnF1gRNJMrTtqTD+wRnJL51ZP3ZOIYS9csBElS7ZiJEydqU1NT3GYYhmH0KERkiqpOzLdeVc60NQzDMLpTdsEXkTNE5B0RmSsik8p9PMMwDCOYsgq+iNQDNwIfAvYDLhCR/cp5TMMwDCOYcnv4RwBzVfV9VW0F/g58tMzHNAzDMAIot+DvCiz2PV/iLjMMwzAqTLkFPygZOS0tSEQuFZEmEWlavXp1mc0xDMOoXcot+EsAfyLubsAy/wqqerOqTlTVicOGDSuzOYZhGLVLWfPwRaQBeBc4BVgKvAFcqKqzsqy/GlhYwiGHAmtK2L6cmG3Fk2T7kmwbJNu+JNsGybYv07bRqprXYy7rTFtVbReRK4AngHrg1mxi765fkosvIk1hJh/EgdlWPEm2L8m2QbLtS7JtkGz7irWt7KUVVPVR4NFyH8cwDMPIjc20NQzDqBGqTfBvjtuAHJhtxZNk+5JsGyTbviTbBsm2ryjbElU8zTAMwygf1ebhG4ZhGFkwwTcMw6gRepTgi0jfuG3IhYj0i9uGbIjIHiKyd9x2BGGfa/GIyGgRGRS3HdkQkUTPppSg/qMJQEQGlGO/PULwRaS/iNwA/NEttzwwbpv8uPb9GrhVRM4TkeFx2+QhIn1E5Hc4cyHGikivuG3ycM/b9cBvReTEhH6u1wN/FZFPi8jouG3ycG37FfAIsEvc9mTi2vdL4HER+YmIHBO3TR4iMkBEfisie2vCBjFFpJ+rdfeJyIUiMjbK/fcIwQd+DfQG7gcuABJTV19EzgImA23AXcBlwGGxGpXO+cBOqrqXqj7uVi2NHRHpD9yKc94eAs4EvhWrUT5E5FjgRWA7jp3H4Xz3YkdEJuJ854YAh6rq7JhNSsOdYX8jzjyfz+LUzzolVqNcRGRPnKq9XwR+GLM5QfwQ2BH4MXAocG2UO09sT1sREVVVERmK48Gcr6pbRGQu8HUR+aKq3hKjfXWq2gnMBy5R1SZ3+fnAprjs8iMidcAI4K/u85NwbHtfVdfHZJO4XtUuwJ6qer67XIGrRWSmqv49DtsyWAv8zvuOichuwB7uY4nZM2wG5gHXq2qbiBwCbACWqGp7jHZ5DAPGqOoJACKyAzA9XpNSbAWuwynTPk1EzlDVx+P8TEWkwa1K0B8YAPxMVeeIyAzgFhH5rqr+OIpjJc7DF5F9ROT3wH+KyI6qugboxLkiA7wNPACcKSIV72AcYN8sVW0SkWEi8hhwpPva+e4HWHHbRORrrm2dwHjgOBH5CvC/wOXAX0RkZBy20XXe3gUWishl7irbgPeB80RkcCVtc+0bJyKf856r6hzgb74Y71JgtPtaRYUhwLaZOB7+f4rIc8BvgeuBn4vITpW0LYt9ywEVkdtE5DXgLOBsEXkwhu/dXiLyGxH5kogMdm17w70w/gb4nmtzxcXe/U3cBvxQREar6hZgMHCha9MGnN/sx0VkRBTHTJTgu/Gqv+J4LwcDN7ney3XA6e4H1gLMABYAE2K07yDgBhH5gPvyOuBvqroHTgjgGOCcmGw7GPi9iIwHfobzBdpbVY/AEfz3gKtjtO0GN6b7a+A7InIT4MWjl+DclVQMEbkcmIJz53ieu6xOVbf6hOAQIGsdqEra5vJnnPpUD6jqccAP3OeXJMS+jwB3AHNUdTzwBZzCiN+roG2TcJzDpcCJwB/E6cK3DcC9e+sUka9VyiafbTsBtwEzcT63n4rIB4FvA+dL12D3DOA5nJBnySRK8IF9gDWqeh1OLPwdHNFsxrkl/DaAqs4HxuDcnsVp31ycO41xqtqhqn9x7XsCGAhsjtG2t4GLgC04MfLjXNtacGLTK2Ky7Us45+1DOF/mo4HHgBPc83csTty8kszDEaSrgQtFpI97d+S16QQYCbzsLjtFRHaOyzYAVV0NXKmqv3GfT8P5vq2tkF357NuMUxq92X3eArwErKqEUeJkVm0B/kNVfw5cDBwAHOCGihvdVb8LXCIijSLykQoOzO8DbFPVX+Lo2mPAf+BexHHu2HDH3DqASJqFJE3wZwLNIrKPqrbhnIQdcMISNwPniMjHRORInDhhpVOqMu171LXvKP9KInIQMJbKllYNsq0vcDzwTWCIiJwrIqcAV+J4PXHY1uqz7UxVXaqqD6nqBhE5GscLrOSF0rtA3w9Mw7lT+zKkvPwOdyxkJLC3iDyKMxDZGbNt4oY7cZ8fBJwELK+EXTns+5Lv5SdxQjmnuwPN36By37ttwH2qOktEeqtqMzAVR1BxfyOo6nM4DsYm4CtApcZApgK9ReQw17mYjNMd8BzgGuBINwx1Os5vOJLvWyyCLxnpd744aW9gDo6Xh6q+gfMF3kNV5wFX4fTJvQW4SVVfjtm+JpwQxFgRqRORsSLyoM++yTHbthg4UFW344jUSBxP7Deq+qcE2DbWXW+oiNwC3ATco6pl8VJz2If7o1uKI14fFJG9PC8fGAecDXwc+LOqXuR62HHapu56Q0TkXuCPwG/d6rSRU4B9p4rIXu7ylcD/4Nxp3gL8WlUjr08TZJs6LHftaHHv1CYA633r9XJDUiOAz6nqGaoa6QXJd4eYSSOO43Oua+N8nDveke7F6SIcp+gHOOftX5EYpKoV/ee+gfeAnwKfdJc1+F7/IvBL4Ej3+ZHAzITbN8N93Be4OGG2vZX08+Y+/3AM9tUHrDcCZ9zju+7zvdy/X0ugbePdv59I+LnrkwDbjgX+5bfV/XtAGW37OfAdYHCW1z8I/AnnThecSEZTWc9XOb8oAW/wLODfOI3Mz8CJI49zX6tz/47Cycd+FOgPfNI9KTsk3L5+CbatrOeuRNv6x/m5Zll/b1dEtgJXJdi2byX83H3T+/zjso2uApFn4dzdngfMpryO2Q44+fQLgbuBk7OsNxDnznsqznjHx3Hi90PLZlsFvjCDfI/PBa7zPf8pzi185jaCk5nzIE7894hatM9sq7h9dcBw4DXgVeC4WrMt6fYVY5v72i04cfB7ym0bzjjBQUA/4Ps4dyG759juauAvwFvAUeX6XFXLKPg4swBvxBl4vcT9MpwN3A708n1JZgFnuM/9IQABhtWifWZbxe2r923fhzKFSJJsW9LtK8U29zt3CWXy6gNsG+17bR8cMf8Y0Jixnfgelz2CoarlGbR1R5YfxxkguQ5nWvWp7gk50H2OOoM9v8WdUq++WYLqEOnAWE+wz2yLxb4Od3tR1WZVvaeWbEu6faXa5n7n/qSqt1fAtpPxlZFQ1bdx5imcCOzl31ZdpXcfb4vatkDKdMUbD+zne347cJr7+DPAM7i3OMC+OBNwelXiCpd0+8y26rQvybYl3b4eaNvJGesMA34HfAL4HHB6pT7XzH9lqaWjzrR5rzTqTTjFxHqJyH6q+msRORD4voi8gTN4N1UrWNQryfaZbdVpX5JtS7p9PdC2RnEqBPxBndnaq0VkKc5colWkz1WoLCVe3foCo3K83gv4iPv4AJyBk8/j5KCeiBPb+s8yXn0Ta5/ZVp32Jdm2pNtXZbb9HjeVF6csx0Lg6+X6XEO/jxJOwGXAu8AFGcuzpmHhFAL6TJh1I/iAEmuf2Vad9iXZtqTbV4W2XevZhpOGXLbc+oLeSxFvfihwL/AKsH/Ga/4R+/EZrx3ubhOYkxrhh5NY+8y26rQvybYl3b4qt+2Ucn6uRb2nAt58g/u3EacK3kXu8+E4cSsvBWpXnAYD97knbAxOt6WXgXPK+OEk1j6zrTrtS7JtSbfPbIvnnzcLLSvidK+51n3zj6rqEyJyHM5tTh9gT5z41EqcQYl+wDGq+lPfPj6pZWpqkWT7zLbqtC/JtiXdPrMtXnIKvlsg6UaclluP4aQU3aeqN4nId3GueN8EdsKZFny4ql7k275R3ap0ZTE+wfaZbdVpX5JtS7p9Zlv85EvLHIAzwny6qm4WkTU45U7PVdUf+97kChFZDOzlXiUV6KzACUiyfWZbddqXZNuSbp/ZFjM5Z9qq6iaczlIXu4smA2/glGgd4b1JcXpWfgrYpKrt6jQDyR0rioAk22e2Vad9SbYt6faZbfETprTCA8AhIjJSnZ6LM4AWYKQ4fB+nYNLbqlqxtnk9xD6zrTrtS7JtSbfPbIuRMIL/Ek7btIsBVHUqThOSfu6V7XXgQ6pasV6VPcg+s6067UuybUm3z2yLkbylFVR1uThdnK4Vkbk4tznNuK3AVPWx8prYc+0z26rTviTblnT7zLaY0fC5qR8CbsVpjn1F2O0q9S/J9plt1Wlfkm1Lun1mWzz/8ubh+xGn07uqr9xtkkiyfWZb8STZviTbBsm2z2yrPAUJvmEYhtFzKUsDFMMwDCN5mOAbhmHUCCb4hmEYNYIJvmEYRo1ggm8YhlEjmOAbRgAiMkZELixiu9tF5ONFbHexiOxS6HaGUQgm+EbV41Y1LJQxQMGCXwIXAyb4RlkxwTeqAhH5rIjMEJHpIvIX19P+lYg8C/yviPQTkVtF5A0ReVNEPupuN0ZEXhSRqe6/o91dXgscJyLTROTrIlIvIte5288Qkcvc7UVEbhCR2SLyCE7d9Fx2fs/dx0wRudnd/uPAROBO93h9y3emjFrGJl4ZPR4R2R+4H6f70BoRGQL8Cqft3EdVtUNEfgrMVtW/isggnEJYh9JVz7xZRPYC7lLViSJyInClqp7lHuNSYLg6tdF745TP/YS7jy8DZwA7A7OBL6jqvVlsHaKq69zHfwH+oaoPi8hz7vGaynCKDAMIUTzNMHoAJwP3quoaAFVdJyIA96hqh7vOaTgNLa50n/cBRgHLgBtE5BCgAxif5RinAQf54vMDgb2A43EuEh3AMhH5dx5bTxKRq4AdgCHALODhgt6tYRSJCb5RDQiOp57J1ox1zlPVd9I2FLkGp0fpwTghzuYcx/iqqj6Rsf2Hsxy7+w5E+gC/Ayaq6mL32H3CbGsYUWAxfKMaeAY4X0R2AidsErDOE8BXxXX9ReRQd/lAYLmqdgKfAerd5Ztx2t75t/+yW1QLERkvIv2AF4BPujH+kcBJOez0xH2NiPTH6Y3qkXk8w4gc8/CNHo+qzhKRnwDPi0gH8GbAaj8Cfg3McEV/AXAWjsd9n4h8AniWrruCGUC7iEwHbgd+g5O5M9XdfjVwDk6XpJOBt4B3gedz2LlBRG5x112AU2/d43bg9yKyHThKVbcXdBIMIwQ2aGsYhlEjWEjHMAyjRrCQjmGUARF5ABibsfi/Mwd9DaOSWEjHMAyjRrCQjmEYRo1ggm8YhlEjmOAbhmHUCCb4hmEYNYIJvmEYRo3w/zsO+DiFMtlCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 切出一天的数据，绘制一天时段的接口调用情况\n",
    "# 如图所示，从凌晨2点到11点访问少，业务高峰出在现下午二～四点，晚上八九点\n",
    "log['2019-5-30']['count'].plot()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-05-30 00:00:00</th>\n",
       "      <td>3.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 01:00:00</th>\n",
       "      <td>1.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 02:00:00</th>\n",
       "      <td>1.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 03:00:00</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 04:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 05:00:00</th>\n",
       "      <td>1.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 06:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 07:00:00</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 08:00:00</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 09:00:00</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 10:00:00</th>\n",
       "      <td>1.285714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 11:00:00</th>\n",
       "      <td>2.452381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 12:00:00</th>\n",
       "      <td>5.423729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 13:00:00</th>\n",
       "      <td>8.283333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 14:00:00</th>\n",
       "      <td>9.700000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 15:00:00</th>\n",
       "      <td>9.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 16:00:00</th>\n",
       "      <td>9.816667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 17:00:00</th>\n",
       "      <td>7.216667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 18:00:00</th>\n",
       "      <td>7.383333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 19:00:00</th>\n",
       "      <td>9.950000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 20:00:00</th>\n",
       "      <td>13.566667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 21:00:00</th>\n",
       "      <td>13.466667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 22:00:00</th>\n",
       "      <td>10.383333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-30 23:00:00</th>\n",
       "      <td>8.272727</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         count\n",
       "created_at                    \n",
       "2019-05-30 00:00:00   3.666667\n",
       "2019-05-30 01:00:00   1.466667\n",
       "2019-05-30 02:00:00   1.166667\n",
       "2019-05-30 03:00:00   1.000000\n",
       "2019-05-30 04:00:00        NaN\n",
       "2019-05-30 05:00:00   1.500000\n",
       "2019-05-30 06:00:00        NaN\n",
       "2019-05-30 07:00:00   1.000000\n",
       "2019-05-30 08:00:00        NaN\n",
       "2019-05-30 09:00:00   1.000000\n",
       "2019-05-30 10:00:00   1.285714\n",
       "2019-05-30 11:00:00   2.452381\n",
       "2019-05-30 12:00:00   5.423729\n",
       "2019-05-30 13:00:00   8.283333\n",
       "2019-05-30 14:00:00   9.700000\n",
       "2019-05-30 15:00:00   9.400000\n",
       "2019-05-30 16:00:00   9.816667\n",
       "2019-05-30 17:00:00   7.216667\n",
       "2019-05-30 18:00:00   7.383333\n",
       "2019-05-30 19:00:00   9.950000\n",
       "2019-05-30 20:00:00  13.566667\n",
       "2019-05-30 21:00:00  13.466667\n",
       "2019-05-30 22:00:00  10.383333\n",
       "2019-05-30 23:00:00   8.272727"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log2 = log['2019-5-30']\n",
    "log3 = log2[['count']].resample('1H').mean()\n",
    "log3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 353,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEWCAYAAAB2X2wCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xt8VfWd7//XJ3cCSSDkyjXchAAKaFTASyuIgu0otra1tWq1M87pzOlM+5uemXb8PXramba/6c+ZTtvTc07HtlZrrU6r4uUoCGqtF0AM95Bwv4fcAyEEcv+eP/YKjWlCbnvvtffO+/l45EFYWZdPwua9V75rfT/LnHOIiEj0i/O7ABERCQ4FuohIjFCgi4jECAW6iEiMUKCLiMQIBbqISIxQoIuIxAgFuohIjFCgi4jEiIT+VjCzx4CPA9XOufk9vvY14BEg2zlX29++srKyXEFBwRBLFREZmbZu3VrrnMvub71+Ax14HPgJ8KvuC81sMrACOD7QogoKCiguLh7o6iIiApjZsYGs1++Qi3PubaC+ly/9O/D3gJrBiIhEgCGNoZvZ7UC5c27nANZ9yMyKzay4pqZmKIcTEZEBGHSgm1kq8DDwzYGs75x71DlX5Jwrys7udwhIRESGaChn6DOAacBOMzsKTAK2mVleMAsTEZHBGchF0Q9xzu0Gcrr+7oV60UDuchERkdDp9wzdzJ4GNgGzzeykmX0x9GWJiMhg9XuG7pz7bD9fLwhaNSIiYeCcw8z8LiPoBj3kIiISzb77SilPbDpGbnoy+emjyMtIIT8jhdz0wJ953kf2mGQS4qNrMr0CXURGDOccL++sYNr40czJT6OioZkdJ86wbk8zre2dH1o3ziAnLYXcjBTy0wMhP2ncKD599WTSUxJ9+g4uTYEuIiPG0brzVJ5t5svLZ3LPtVMvLnfOcfp8GxUNF6g620xFQzOVXR9nmzlYc473DtbS2NJOS3snf33TTB+/i74p0EVkxNh4KHAz3tIZWR9abmZkjk4ic3QS8yZk9Ln97T95l9fLqiI20KNrgEhEZBg2HaojLz2FgvGpQ9p++Zxcdpw4Q+25liBXFhwKdBEZEZxzbDpUx9IZ44d8h8vywhycgzf3Vge5uuBQoIvIiLC/6hx1Ta0snjF+yPuYNyGd/IwU3ixToIuI+GbTxfHzoQe6mbFsTg7vHKihpb0jWKUFjQJdREaEjYfqmJw5iknjhjZ+3mV5YQ5NrR1sPtxbV3F/KdBFJOZ1dDreP1LP0ulZ/a/cj6UzskhJjOONsqogVBZcCnQRiXllFWdpuNDGkmEMt3RJSYzn+pnZvFFWjXOR9XwfBbqIxLxNh+oAghLoADcX5lB+5gJ7KxuDsr9gUaCLSMzbeKiW6dmjyU1PCcr+ls0JdBCPtNsXFegiEtPaOjrZcqR+WHe39JSTnsKCSRm8HmHj6Ap0EYlpu8sbaGrtYEkQLoh2tywCZ40q0EUkpnWNny+enhnU/UbirFEFuojEtE2H6piTl8b4MclB3W/XrNFIun1RgS4iMaulvYPiY/VBu7uluz/OGq2luS0yZo0q0EUkZu04fobmtk6WTA9+oAPcXJjL+dYO3j8SGbNGFegiErM2Ha4jzuDaEAX6khnjGZUYHzHDLgp0EYlZGw/VMW9CBhmjQvPIuJTEeK6bmRUxs0YV6CISky60drDj+Jmg3n/em0iaNdpvoJvZY2ZWbWYl3ZY9YmZ7zWyXma0xs7GhLVNEZHC2HjtNa0fnsPqfD0TXrNFIGHYZyBn648DKHss2APOdc1cA+4FvBLkuEZFh2XS4loQ44+qC4N5/3tMfZ436fz96v4HunHsbqO+xbL1zrt3762ZgUghqExEZso2H6rhiUgZjkhNCfqzlhbnsPHmGmkZ/Z40GYwz9QWBtX180s4fMrNjMimtqaoJwOBGRSzvX0s6ukw0snRHc6f596Zo1+vt9/p6lDyvQzexhoB14qq91nHOPOueKnHNF2dnZwzmciMiAfHCkno5OF5IJRb2Zmx8Zs0aHHOhmdj/wceAeFwn364iIeDYdriMpPo6rpo4Ly/EiZdbokALdzFYC/wDc7pw7H9ySRESGZ+OhWhZNGUtKYnzYjtk1a3Tz4bqwHbOngdy2+DSwCZhtZifN7IvAT4A0YIOZ7TCzn4a4ThGRAWk438aeU2fDNn7e5Y+zRv0bR+/38q9z7rO9LP5FCGoRERm2zUfqcC54j5sbqJTEeK6flcWbe6v5J+cws7AeHzRTVERizKZDdaQkxrFwcvjnO/o9a1SBLiIxZdOhOq4uyCQpIfzxdtNsf2eNKtBFJGbUnmthX1Vj2Idbuvg9a1SBLiIxo+sOk1D1Px8IP2eNKtBFJGZsPFTHmOQELp+Y4VsNF2eN+vCsUQW6iMSMzYfquGZaJgnx/kXb3Px0JmSk8Mbe8I+jK9BFJCZUNjRzuLYp5P3P+2NmLCv0Z9aoAl1EYsKmw7UALPZx/LzLcp9mjSrQRSQmbDxYR8aoRObmp/tdCkum+zNrVIEuIjFh0+E6Fk/PJC4u/DM0e+qaNfpGWVVYnzWqQBeRqHei/jwnT18Ie/+WS7m5MIdTDc2UVYRv1qgCXUSi3qZD3v3nPl8Q7e4m71mjb4bxbhcFuohEvY2Haskak8SsnDF+l3JRTloKCyaPDeusUQW6iEQ155w3fj7elw6Hl3LznJywzhpVoItIVDtc20TV2ZaIGj/vsizMs0YV6CIS1SJx/LxL16zR18PUfVGBLiJRbdOhOvIzUigYn+p3KX8i3LNGFegiErU6Ox2bD9exJALHz7ssL8zlQlt4Zo0q0EUkau2vbqSuqTUih1u6LJk+ntSk8MwaVaCLSNSK5PHzLimJ8Vw/M4vXy6ro6AztrFEFuohErY2H6piSmcqkcZE3ft7dnYsmUtHQHPKLowp0EYlKHZ2O973x80i3Ym4uE8eO4rF3j4T0OAp0EYlKpafOcra5naUzIz/QE+Lj+MLSAt4/Uk9JeUPIjtNvoJvZY2ZWbWYl3ZZlmtkGMzvg/TkuZBWKiPSiq/95NJyhA3z66smkJsXz2HuhO0sfyBn648DKHsu+DrzhnJsFvOH9XUQkbDYeqmNG9mhy0lP8LmVAMkYl8umiyby88xTVjc0hOUa/ge6cexuo77H4DuAJ7/MngNVBrktEpE9tHZ18cKQ+ou9u6c39Swto73T8evPxkOx/qGPouc65CgDvz5y+VjSzh8ys2MyKa2pqhng4EZE/2nbsNE2tHSyZHnn9Wy5lWtZols/J4anNx0IyczTkF0Wdc48654qcc0XZ2dmhPpyIjAAv7jxFSmIcH5kdfZny4HXTqGtq5aUdp4K+76EGepWZ5QN4f4b3wXkiEjR151r40esHuOa7r/ODDfv9LqdfLe0dvLKrglvn5TEmOcHvcgZtyYzxzMlL47H3jgT98XRDDfSXgPu9z+8HXgxOOSICUN3YHPJmTodqzvGPa3az9F/e5N9f309bRydPbT5GW0dnSI87XG/tq6HhQhurF030u5QhMTMevH4aeysbL850DZZ+397M7Gngo0CWmZ0E/jvwL8BvzeyLwHHgU0GtSmQEO1Rzjo/9+B3izLhpTg6r5udx0+wcRgfhbNQ5x5Yj9fzsnSO8sbeKxPg4PrFoIl+8fhqHa5v4yye38u7BWm6a3edlMd+9sL2crDFJ3DAzusbPu7t9wQS+v3Yvv3j3CEuD+H30+wpxzn22jy8tD1oVIgIEugf+w7O7SE6I57bL89lQWskruypITojjxsuyWTU/j+WFuWSMShzUfts7OllbUsnP3znMzpMNjEtN5MvLZnHv4qlkpyUDMGV8KukpCby4vTxiA73hfBtvlFVzz+IpJMRH77zIlMR47lk8lR+/cYAjtU1MyxodlP1G3wCUSAz71aajFB87zb99agGfvGoS31k9n+Kj9awtqeS1PZVsKK0iMd5YOiOLVfPzWDE3l/Fjkvvc37mWdp7ZcpxfvneU8jMXmJY1mu+sns8nr5zEqKT4D62bnBDPx67I58Udpzjf2k5qUuTFw6slFbR2dHJnlA63dPf5xVP46VuHePy9I3z7jvlB2acFe1D+UoqKilxxcXHYjicSTU7Un+fWH77N1QWZPP7A1X/S37uz07Hz5BnWlVSytqSS4/XniTO4dtp4Vl2ex63z8sj1JtlUNFzg8feO8pstx2lsbueagkz+/IZp3FyYS1xc333DNx+u4+5HN/Ojuxdyx8LIC81P/8cmas+18Mb/85GI7X8+GH/3252sLalg0zeWX/K3LjPb6pwr6m9/kfcWLDICOef4xvO7MeB7n7i817CKizMWTRnHoinj+PqqOZRWnL0Y7t98cQ/ffHEPV00dR156Cq/tqcQBq+bn8Rc3TGfB5LEDquOagkwmZKTwwvbyiAv0E/Xn2XKknq/dcllMhDnAA9cV8Ny2k/z2gxP8xY3Th70/BbpIBPht8QnePVjLP6+ez8Sxo/pd38yYNyGDeRMy+LtbZnOwupG1uwPh/vaBGu5bUsAD1xUwOXNwbWXj4ozbF07kZ+8cpu5cyyWHc8LtpZ2B+7Yj7Y1mOOZPzODaaZk8vvEoD1xXMOzrAtF7VUEkRlSdbeY7r5Rx7bRM7rlmypD2MTMnjS8vn8Wrf3sDu791K9/8s7mDDvMuqxdNoKPT8cruiiFtHwrOOZ7fdpKrC8YN+fuKVA9eP43yMxdYXzr8XukKdBEfOed4eE0JbR2dfP+TV1xyfDtc5uSlMycvjRe2l/tdykV7Tp3lUE0Tdy6a5HcpQXdzYS5TMlOD0itdgS7io5d3VfB6WRV/t2I2BUG6dS0Y7lg4kW3Hz3C87rzfpQDw/LZykuLj+Njl+X6XEnTxccYXlhZQfOw0O0+cGda+FOgiPqk718K3XtrDgsljefD6aX6X8yG3L5wAwIs7/D9Lb+/o5KWdp7hpTjYZqYO7/z5afKpoEmOSE4bdK12BLuKTb71cSmNzG4/cdQXxETDU0t3EsaO4Zloma3aUB73fyGC9d6iO2nMtMXHveV/SUgK90l/ZVUFlw9B7pSvQRXywobSKl3ee4svLZnFZbprf5fRq9cKJHK5poqT8rK91vLC9nPSUBG6aE5mzV4PlgesK6HSOJzcfHfI+FOgiYdZwoY2H1+xmTl4aX/roDL/L6dNtl+eRGG+84OOwS1NLO+tKKvnYFRNITojvf4MoNjkzlRVzc/nN+8e50Dq0xmwKdJEw+94rZdQ1tfLIXQtIjOB+JGNTk/jo7Bxe3nmKjk5/hl3Wl1Zyoa0jpodbunvwummcPt/GmiHeYRS5ryaRGPTOgRr+s/gEf3HDdC6flOF3Of1avXAi1Y0tQW/zOlBrtp9i0rhRFE0dGc+hv2ZaJvMmpA+5V7oCXSRMmlra+fpzu5meNZqv3DzL73IGZHlhDmnJCb4Mu1SfbebdAzWsXjgxIu7PDwcz48HrpnGw+hzvHKgd9PYKdJEweeS1fZxquMD/f9cVpCRGx3hwSmI8K+fnsa6kMuQP3OjppZ2n6HRE7YMshurjC/LJTkse0i2MCnSRMCg+Ws8Tm45y/5ICigoy/S5nUFYvmsi5lnbeKAvvkyZf2FHOFZMymJkzJqzH9VtyQjz3Lp7KW/tqOFjdOKhtFegiIdbc1sHfP7eLiWNH8d9une13OYO2ePp4ctKSwzrscqCqkZLys6yOoUZcg/G5a6eQlBDHL987OqjtFOgiIfajNw5wuKaJ/+8TlwflMXLhFh9n3L5gAm/tq+bM+dawHHPN9nLi44w/WzAhLMeLNFljklm9cALPbTs5qJ+5Al0khHafbODRtw/z6aJJ3DAr2+9yhmz1oom0dThe3V0Z8mN1djpe3HGKG2ZlXXw83kj04PXTaG7r5OktJwa8jQJdJERa2zv5b8/uZPzoJB7+2Fy/yxmWeRPSmZE9OiwdGD84Wk/5mQsj5t7zvszJS+e6meN5YuPRAW+jQBcJkSc2HmVvZSPfvfPyQT/UOdKYGasXTmTL0XpOng5tB8Y128tJTYpnxdzckB4nGjx43TQqzw68t4sCXSREntt2kqKp42ImmLqeFNT15KBQaG7r4JXdFaycnxeRD6kOt5tm53B1wcAnVQ0r0M3sq2a2x8xKzOxpM0sZzv5EYsXR2ib2VjayKob6d08Zn8qVU8by4vbQBfrv91bT2Nw+4odbusTFGb/7L0sHvv5QD2RmE4G/AYqcc/OBeODuoe5PJJasLQlcPFw5P8/nSoLrzkUT2VfVSFlFaDowrtleTk5aMktnZIVk/7FuuEMuCcAoM0sAUoHQvXWLRJF1JRUsmJQxoAc+R5OPXTGBhLjQdGA83dTK7/dVc8fCCRHXHz5aDDnQnXPlwL8Cx4EKoME5t77nemb2kJkVm1lxTU3N0CsViRLlZy6w82QDK+fHznBLl8zRSdx4WTYv7zhFZ5A7ML6yu4K2DjfipvoH03CGXMYBdwDTgAnAaDP7fM/1nHOPOueKnHNF2dnRex+uyECti9Hhli53LJzAqYZmthytD+p+X9hezmW5Y5ibnx7U/Y4kwxlyuRk44pyrcc61Ac8DAx+9F4lRr5VUMicvjWkR9NDnYFoxN5fUpPigPm/0eN15io+d5s5FkzDTcMtQDSfQjwOLzSzVAv8Cy4Gy4JQlEp2qG5v54Fh9zJ6dA6QmJXDrvDxe2VVBS3twOjB2jcnfsXBkTvUPluGMob8PPAtsA3Z7+3o0SHWJRKX1e6pwDlbF4Ph5d3csnMDZ5nbe2jf862LOOV7YXs7i6ZlMiLGLyOE2rLtcnHP/3Tk3xzk33zl3r3OuJViFiUSjdSWVTM8azWW5sd3y9fqZWWSNSQpKK4BdJxs4XNuke8+DQDNFRYLkdFMrmw7XsXJ+XsyPAyfEx/HxKybwxt5qzja3DWtfa7aXk5QQF1OTsPyiQBcJkg1lVXR0upgfbulyx8IJtLZ3sm4YHRjbOjp5eecpVhTmkp4S3f1uIoECXSRI1pVUMnHsKOZPHBm33S2cPJap41OHNcno3QO11DW16t7zIFH3G5EgaGxu490Dtdy7ZGrMD7d06erA+OM3D1DZ0ExeRv+tnDo7HSdOn6es4ixlFY2sLalgXGoiH7lMc1SCQYEuEgRv7q2mtaOTVTF8u2JvVi+ayI/eOMDLO0/xFzdO/9DXGi60sa+ykb2VgfDeW3mWfZWNnG8N3OoYZ1CQNZqHPzaXpAQNFgSDAl0kCNaVVJKTlsyVUwbe6jQWTMsazYJJGTy37ST5Y1PYW/HHAC8/c+HiemNTE5mTl8Znrp5MYV46c/LTmJWTxqikeB+rjz0KdJFhutDawVv7arjrqknEjcCmUqsXTeTbL5fyX3+znYQ4Y0b2GIoKxvH5vKnMyU+jMC+d3PTkETMU5ScFusgw/WF/NRfaOkbccEuXe66dSn7GKKZkpjIjZzTJCTrr9osCXWSY1pZUMi41kWumZfpdii+SEuJiutVBNNGVCJFhaGnv4M2yalbMzSUhXv+dxF96BYoMw8aDdTS2tI+YyUQS2RToIsOwtqSCtOQEls4c73cpIgp0kaFq7+hkQ2kVywtzdCFQIoICXWSI3j9Sz+nzbTH5qDmJTgp0kSFaW1LBqMR4TVuXiKFAFxmCzk7Ha3uq+OjsbM12lIihQBcZgq3HT1PT2KL7ryWiKNBFhmBdSSVJ8XEsm5PjdykiFynQRQbJOce6kkpumJVFmh7KIBFEgS4ySLvLGyg/c0HDLRJxFOgig7S2pJL4OGPF3Fy/SxH5EAW6yCB0DbcsmT6esalJfpcj8iEKdJFB2FfVyJHaJg23SEQaVqCb2Vgze9bM9ppZmZktCVZhIpFoXUklZnDLPA23SOQZbj/0HwHrnHN3mVkSkBqEmkQi1rqSSq6emklOWv8PRBYJtyGfoZtZOnAj8AsA51yrc+5MsAoTiTRHapvYW9mo4RaJWMMZcpkO1AC/NLPtZvZzMxvdcyUze8jMis2suKamZhiHE/HX2pIKAAW6RKzhBHoCcCXwv51zi4Am4Os9V3LOPeqcK3LOFWVnq4mRRK91JZUsmDyWCWNH+V2KSK+GE+gngZPOufe9vz9LIOBFYs7J0+fZdbKBlfN0di6Ra8iB7pyrBE6Y2Wxv0XKgNChViUSYdSWVAKzScItEsOHe5fJl4CnvDpfDwAPDL0kk8ry2p5I5eWkUZP3JZSKRiDGsQHfO7QCKglSLSESqbmym+NhpvrL8Mr9LEbkkzRQV6cdre6pwDlZdruEWiWwKdJF+rCupYHr2aGbljPG7FJFLUqCLXMLpplY2H65n5bw8zMzvckQuSYEucglv7K2mo9Nxq25XlCigQBe5hA2lleSlp3DFpAy/SxHplwJdpA8XWjv4w/4abpmXq+EWiQoKdJE+vHuwlua2Tj2ZSKKGAl2kDxtKK0lLSeDaaeP9LkVkQBToIr3o6HS8XlbNsjk5JCXov4lEB71SRXqx9dhp6ptaNdwiUUWBLtKL9XsqSYqP4yOXqeWzRA8FukgPzjk2lFWxdOZ40lIS/S5HZMAU6CI97K86x7G689wyV5OJJLoo0EV6WL8n0Pv85sIcnysRGRwFukgP60urWDRlLDnpKX6XIjIoCnSRbk6ducDu8gYNt0hUUqCLdPN6WRUAt8zT7YoSfRToIt2s31PF9OzRzMhW73OJPgp0EU/DhTY2H67TcItELQW6iOetfdW0dzoNt0jUUqCLeNbvqSI7LZmFk8b6XYrIkCjQRYCW9g7e2lfNzYW5xMWp97lEp2EHupnFm9l2M/s/wShIxA8bD9XR1Nqh4RaJasE4Q/9boCwI+xHxzfo9VYxOimfpDPU+l+g1rEA3s0nAx4CfB6cckfDr7HRsKK3io7NzSE6I97sckSEb7hn6D4G/Bzr7WsHMHjKzYjMrrqmpGebhRIJv+4kz1J5r0XCLRL0hB7qZfRyods5tvdR6zrlHnXNFzrmi7Gz1lpbIs6G0ioQ446Oz1YxLottwztCvA243s6PAM8AyM/t1UKoSCaP1pZUsnj6ejFHqfS7RbciB7pz7hnNuknOuALgbeNM59/mgVSYSBgerz3G4pknDLRITwnof+vnWjnAeTqRfG0oDzbhuLlSgS/RLCMZOnHNvAW/1t15Fw4VgHE4kaNaXVnLFpAwmjB3ldykiwxb2M/RdJ8+E85Aifao+28z242dYobNziRFhDfQ4M3616Vg4DynSpw0Xe5+ru6LEhrAG+tjURF7aeYr6ptZwHlakVxtKq5g6PpXLctX7XGJDWAN9/OhkWts7+W3xiXAeVuRPNDa3sfFgHbfMzcVMzbgkNoQ10FMS41g8PZMnNx2jo9OF89AiH/KH/TW0dnSyQg+zkBgS9va59y0poPzMBd7cWx3uQ4tctH5PFZmjk7hq6ji/SxEJmrAH+oq5ueSlp/CrTUfDfWgRAFrbO/n9vmpuLswhXr3PJYaEPdAT4+O459opvHOglkM158J9eBHeP1JHY3O7hlsk5vjyxKK7r5lCYrzxpG5hFB+s31PFqMR4bpiV5XcpIkHlS6BnpyVz2+X5PLf1JE0t7X6UICOUc4He5zdelkVKonqfS2zx7Zmi9y0poLGlnTXby/0qQUag3eUNVJ5t5hYNt0gM8i3Qr5wylvkT0/nVpqM4p1sYJTzW76kiPs5YNke9zyX2+BboZsZ9iwvYX3WO94/U+1WGjDDrSyu5umAc40Yn+V2KSND5FugAty+cwNjURN3CKGFxtLaJ/VXnNNwiMcvXQE9JjOczRZN5bU+VWutKyHX1Pl8xV90VJTb5GugAn188lU7nePr9436XIjFufWklhfnpTM5M9bsUkZDwPdAnZ6aybHYOv9lynJZ2PdFIQqP2XAvFx05zi87OJYb5HugA9y0toPZcK+tKKv0uRWLUm2XVOIeeHSoxLSIC/YaZWRSMT+WJjUf9LkViUHNbB7/ceJRJ40YxNz/d73JEQiYiAj0uzrh3SQHbjp+hpLzB73Ikhjjn+Mfnd1NWcZZv3z5Pvc8lpkVEoAPcddUkRiXG6xZGCaonNh7l+e3lfOXmWSzXs0MlxkVMoGeMSmT1oom8uOMUp/WIOgmCLUfq+c4rZdxcmMPfLJvldzkiIRcxgQ5w35KptLR38rutekSdDE9lQzN/9dRWpmSm8oPPLCROfc9lBBhyoJvZZDP7vZmVmdkeM/vb4RZTmJ/ONdMyeXKzHlEnQ9fS3sF/+fVWLrR28B/3XkV6SqLfJYmExXDO0NuBv3POFQKLgb82s7nDLej+JQWcqL/AW/v0iDoZmm+9VMqOE2f4108tYFZumt/liITNkAPdOVfhnNvmfd4IlAETh1vQLfNyyU1P5ld6+IUMwTNbjvP0luN86aMzWHV5vt/liIRVUMbQzawAWAS838vXHjKzYjMrrqmp6XdfifFxfO6aqfxhfw1HapuCUZ6MENuPn+abL+7hhllZfO2W2X6XIxJ2ww50MxsDPAd8xTl3tufXnXOPOueKnHNF2dnZA9rnZ6+drEfUyaDUNLbwpV9vIyc9mR/fvUgPf5YRaViBbmaJBML8Kefc88EpCXLSUlg5P5/fbT3B+VY9ok4ura2jk7/+zTbOXGjlP+69Sr3OZcQazl0uBvwCKHPO/SB4JQXcv2Qqjc3tvLD9VLB3LTHme6+WseVIPf/yiSuYNyHD73JEfDOcM/TrgHuBZWa2w/u4LUh1cdXUcczN1yPq5NLWbD/JL987ygPXFbB60bCvyYtEteHc5fKuc86cc1c45xZ6H68GqzAz474lU9lb2cgHR08Ha7cSQ/acauAbz+/m2mmZ/ONthX6XI+K7iJop2tMdCyeSnpLAE5uO+l2KRJjTTa385ZNbGTsqiZ987koS4yP6pSwSFhH9v2BUUjyfuXoy60oq+fXmY9Q0tvhdkkSAjk7H3zyzneqzLfz03qvITkv2uySRiBDRgQ7w4PXTmJ41mv/3hRKu/d7rfPo/NvHL947oGaQj2COv7eOdA7X88+p5LJw81u9yRCKGhfOCY1FRkSsuLh70ds459lY2srakknUlFeyvOgfAwsljWTU/j1Xz85kyXs+JHAle3V3BXz21jc9dO4Xv3Xm53+WIhIWZbXXOFfW7XjQEek+Has6xrqSStSX5vA7nAAANV0lEQVQVlJQH5jLNzU8PhPvleczMUf+OWNLe0ckHR0+zobSKZz44zuy8NJ55aDHJCfF+lyYSFjEd6N2dqD9/Mdy3HT8DwMycMayan8fK+XnMzU/XU2qiUFNLO2/vr2FDaRVv7qvmzPk2khLiuHFWFt+983Jy01P8LlEkbEZMoHdX2dDMa3sC4b7lSD2dDrLTkinMT6cwL405+WkU5qczPWsMSQkRf/lgxKk+28zrZdVsKK3kvUN1tLZ3MjY1kWWzc1gxN5cbL8tmdHKC32WKhN2IDPTu6s61sKG0ii1H69lb0cjB6nO0dnQCkBhvzMgeQ2F+OnPy0pjjBX52WrLO5sPIOcfB6nOsL61iQ2kVO04EfsOanDmKFYV5rJiby9UF40jQLYkywo34QO+praOTI7VNlFWcZW9lI3u9Pysami+ukzk6icL8NObkBYJ+6cwsJo4d5Uu9seyDo/Ws31PJhtIqjtadB+CKSRmsKMxlxbxcZuem6Y1VpJuBBvqI+f01MT6Oy3LTuCw3jTu6LT/d1BoI+Mqz7K0I/PnU+8dobuvk3z61gE9eNcm3mmPVt1/ew77KRpbMyOKLN0xnRWEueRkaExcZrhET6H0ZNzqJJTPGs2TG+IvLOjodx+qaGD9aE1ZC4YefWUhuegppejScSFCN+EDvTXycMT17jN9lxCzdVioSGrraJCISIxToIiIxQoEuIhIjFOgiIjFCgS4iEiMU6CIiMUKBLiISI8I69d/MLgB7wnbA4csAGvwuYoCiqVZQvaEUTbWC6h2I2c65fidwhHti0bmB9COIFGb2qHPuIb/rGIhoqhVUbyhFU62gegd4zAE1wQr3kMuZMB9vuF72u4BBiKZaQfWGUjTVCqo3aMI95FIcTWfoIiKRYKDZGe4z9EfDfDwRkVgwoOwM6xm6iIiEjm5bFBGJESMm0M1spZntM7ODZvZ1b9kvzGynme0ys2fNrNeeuWb2DW+7fWZ266X2GeJ6zcy+a2b7zazMzP6mj23vN7MD3sf93ZZfZWa7vX3+2IL0WKA+al1mZtvMrMTMnjCzXu+oCnet3r4fM7NqMyvptuwRM9vrvRbWmNnYgX6v3vJpZva+9338p5klhbDWb5lZuZnt8D5ui4RaL1HvQjPb7NVabGbX9LFtuF+3k83s997/pT1m9rfe8k95f+80sz7Hrf34+fbLOTekD2AlsA84CHzdWzYNeB84APwnkNTHtt/wttsH3HqpfQbjA4gHDgHTgSRgJzAXSO+2zg96O6a33k4g2fv+Dnn763WfIa73AeBXQJy3Xk4v22YCh70/x3mfj/O+tgVYAhiwFlgVwlpPAJd56/wT8EW/a+123BuBK4GSbstuARK8z78PfH+g36v3td8Cd3uf/xT4Ughr/RbwtaH8u4Sy1kvUu77r3w+4DXgrEl4LQD5wpfd5GrDfe+0WArOBt4CiSPr59vcxpDN0M4sH/iewyvsBfNbM5hL4j/DvzrlZwGngi71sOxe4G5hHIMD/l5nFX2KfwXANcNA5d9g51wo8A9zhnDvr1WTAKKC3Cwp3AM8451qcc0cIvNlc09c+Q1kv8CXgn5xznQDOuepetr0V2OCcq3fOnQY2ACvNLJ/AG9gmF3il/QpYHaJaPwm0OOf2e+ts8Jb5XSsAzrm3gfoey9Y759q9v24Genv2YK//Lt7rZxnwrLfeE8Gqt7daByjstUKf9Tog3fs8AzjVy6Zhfy045yqcc9u8zxuBMmCic67MObevn819+fn2Z6hDLn0FzkC+ET8CciKBM8YuJ71lmNkvgUpgDvA/vGW3m9k/9bNtn/sMYb0zgM94v7auNbNZXr1FZvbzAdR7MgT19na8PCCx26+rdwGTI6DWgXqQwJkgZjbBzF71lvdV73jgTLc3hHDU+1+94aHHzGxchNf6FeARMzsB/CuB39Aj6rVgZgXAIgIjDH2tE6k/34uGGuh9fTO9fiMREJC9jbk5AOfcA8AEAu/On/GWveSc+2Y/2/a5zyDoa9/JQLML3I/6M+AxAOdcsXPuz/vZNlT19rbfTgK/hf27mW0BGoH2CKi1X2b2MIFanwJwzp1yznWNUUdKvf+bwJv7QqAC+DeI2Foh8JvlV51zk4GvAr+AyHktWODa2XPAV7p+a+9NBP98LxpqoPdWdHwvy7pC0++APIl3huiZRLdf+5xzHQTG/HsbFuhr20vuM0T1niTwwgNYA1wxyG0n9bI8JLV6vyLf4Jy7BnibwHUVv2u9JO9C3MeBe7xf73vqq95aYKz98cJvSOt1zlU55zq8obefEfjtNiJr9dwPPO99/jsGV29IXwtmlkjg/9RTzrnn+1u/m0j6+V401EDv7Zs5zsC+ET8C8gNglnf1OYnA2eNLZjYTLo6h/xmwt5dtXwLuNrNkM5sGzCJwkabXfYayXuAFAsNaAB8hcBGnp9eAW8xsnPer+C3Aa865CqDRzBZ73+99wIuhqtXMcgDMLBn4BwIXh/yutU9mttKr83bn3Pk+Vuv1e/XC//cEhpYgEGAhq9cbV+5yJ1DSy2oRUavnFIHXKwRev729uYf9teDt7xdAmXPuB4PcPJJ+vn80lCupBJp6HSZw10fXFd55BN59u1/d/atetp3Hh+8aOUzg7L7XfQ6lvj5qvo1AAB4CHibwZvYesJvAf4in8O56AW4ncPGxa9uHve320e0Ke899BqvWvvYNjAVe8WreBCzwlhcBP++27YMErk0cBB7otrzI+14PAT/Bm1gWolofITCMtY/Ar7JEQq3evp8mMFTRRuBE4ove8U8AO7yPn3rrTgBe7e/fnMDdDlu8/fwOSA5hrU96r4FdBN7o8yOh1kvUez2wlcD/6feBqyLhteDV5byfY9e/+20E3iRPAi1AFYE3loj4+fb3MeSZoha49/WHBML4Mefcd81sOoGLmZnAduDzzrkWM7udwO0/3/S2fdj7x2sn8J99bV/7HFJxIiIjkKb+i4jEiBEzU1REJNYp0EVEYoQCXUQkRgwo0M0sxcy2WKCR1R4z+7a3fEBNaMzsqJm902PZDuvWwEdERIZnoGfoLcAy59wCArPTVprZYgbQu6WbNDPrmv5dOIyaRUSkFwMKdBdwzvtrovfhGFwTmt/iTa0HPkvgflUg0EfBzN6xQLvVbWa21Fv+pJnd0W29p7xbIEVEpIcBj6F7HRF3ANUEOqEdYnBNaJ4FPuF9/md8+EGr1cAK59yVBEL/x97ynxNoGYuZZQBLgVcREZE/MeBAd4HeEQsJTMm/hkDP4D9Z7RK7qAdOm9ndBGYQdp9enQj8zMx2E5hZNdc75h+Amd408s8Cz3V7AxERkW56fYrMpTjnzpjZW8BivN4tXshOAk5ZoK/5Vm/17k25INAA638CX+ix268SmGK7gMCbTHO3rz0J3EOgV8KDg61XRGSkGFCgm1k20OaF+SjgZgIXRLua0DyD14TGBToXLuxjV2sIPCXkNQJ9EbpkACedc51ex7vunRsfJ9AXodI5t2eg35iIyEgz0DP0fOAJ7+w7Dvitc+7/mFkp8IyZfYdA75ZfXGonLvBUkO8D2IcfC/i/gOfM7FME3iSaum1TZWZlBDoNiohIHyK+l4uZpRLoLHelc67B73pERCJVRM8UNbObCfQo/x8KcxGRS4v4M3QRERmYiD5DFxGRgVOgi4jECAW6iEiMUKCLiMQIBbqMOF4zuM8NYbvHzeyu/tf8k+2+YGYT+l9TZHgU6BLVzGzQ7SuAAmDQgT4MX+DDM6NFQkKBLhHPzO4zs13eA1ae9M6Uf2Bmvwe+b2ajzewxM/vAzLZ3tVzuqy0z8C/ADd5DVr7qdRJ9xNt+l5n9pbe9mdlPzKzUzF4Bcvqp85vePkrM7FFv+7uAIuAp73ijQveTkpFO96FLRDOzecDzwHXOuVozywR+AGQBdzjnOszse0Cpc+7XZjaWQO+fRQS6f3Y655rNbBbwtHOuyMw+CnzNOfdx7xgPATnOue+YWTLwHvApbx9fAlYCuUAp8OfOuWfphZllOufqvc+fJNAi42Wvmd3XnHPFIfgRiVw0lF9XRcJpGfCsc64WwDlX7/UB+p3XCA7gFuB2M/ua9/cUYApwCviJmS0EOoDL+jjGLcAV3cbHM4BZwI0E3gQ6CHQSfbOfWm8ys78HUoFMYA8f7vsvElIKdIl0Ru999pt6rPNJ59y+D21o9i36bsvc8xhfds691mP72/o49p/uwCyFQJO5IufcCe/YKQPZViRYNIYuke4N4NNmNh4Cwxq9rPMa8GXzTt3NbJG3PAOocM51Avfyx7bMjUBaj+2/ZGaJ3vaXmdlo4G3gbm+MPR+46RJ1doV3rZmNIdBWukvP44mEhM7QJaI55/aY2XeBP5hZB4E2zT39M/BDYJcX6keBj9N3W+ZdQLuZ7STQb/9HBO582eZtX0Pg+bhrCAz57Ab2A3+4RJ1nzOxn3rpHgQ+6fflx4KdmdgFY4py7MKgfgsgA6aKoiEiM0JCLiEiM0JCLyCCZ2RpgWo/F/9DzoqpIuGnIRUQkRmjIRUQkRijQRURihAJdRCRGKNBFRGLE/wV11FOQ6uu7VwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEWCAYAAACOv5f1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VuWd9/HPLzshCyQhZAMSZAeBQIq41XUUlQpY6Nip1qUtM306dcZn+mprnaeLU7uMjmPttNOxrVqXqS0IolarraK2KGgCyL7JloWEQCAJS/br+eMcMGACIbmT+75zf9+vV16Ek7P87nD4nnOuc53rmHMOERGJLFHBLkBERPqewl9EJAIp/EVEIpDCX0QkAin8RUQikMJfRCQCKfxFRCKQwl9EJAIp/EVEIlBMX24sIyPD5efn9+UmRUTCXklJyQHn3JBArrNPwz8/P5/i4uK+3KSISNgzsz2BXqeafUREIpDCX0QkAin8RUQiUJ+2+XekubmZsrIyGhoagl1Kn0tISCAvL4/Y2NhglyIiESbo4V9WVkZycjL5+fmYWbDL6TPOOQ4ePEhZWRkFBQXBLkdEIkzQm30aGhpIT0+PqOAHMDPS09Mj8opHRIIv6OEPRFzwnxCpn1tEuq6ppa1X1hv0Zh8REYG2NkfpoWNsqaxnW2U9W6q8P3cdONor21P497KHH36YhQsXkpiYGOxSRCQEOOeorm9ka1U9Wyv9r6p6tlcd4Xhz68n5hqUNYOzQFK6ZOJSv/zDwdSj8e9nDDz/MLbfcovAXiUB1Dc1s88P9RNBvq6rn0LHmk/NkJMUzNiuJz84YztisJMYMTWbM0GQGxn8Uz1/vhdpCKvy/9+JGNlXUBXSdE3JS+M6nJp5xnieffJIHH3wQM2Py5Ml8//vf584776S6upohQ4bw+OOPM3z4cG6//XZmz57N/PnzAUhKSuLIkSO8+eabfPe73yUjI4MNGzYwffp0nn76aX76059SUVHBFVdcQUZGBsuXLw/oZxOR0NDQ3MqH1UdOnsVv9ZtuKmo/6tCRFB/DmKFJzJqUxdihyYzJSmbs0GTSk+KDUnNIhX8wbNy4kfvvv58VK1aQkZFBTU0Nt912G5///Oe57bbbeOyxx7jrrrt4/vnnz7ieNWvWsHHjRnJycrj44otZsWIFd911Fw899BDLly8nIyOjjz6RiPSW1jbHnoNH2VZV77XN+0G/++AxWtscALHRxnlDkphRkHYy4MdmJZM7aEBIdfIIqfA/2xl6b3jjjTeYP3/+yXBOS0vj3XffZcmSJQDceuutfP3rZ7/omjFjBnl5eQBMnTqV3bt3c8kll/Re4SLSa5xzVNU1sqWy7pSg3151hEa/940ZjEhLZMzQZG44P/tk0OdnDCQ2OiQ6Up5RSIV/MDjnzno0PvHzmJgY2traTi7X1NR0cp74+I8u3aKjo2lpaemFakUk0GqPNftNNXVsrapnW+URtlbVU3v8o3b5zOR4xmYlc+vMEYzJSmZcVjKjMpNIjAvfCA3fygPkqquuYt68edx9992kp6dTU1PDRRddxLPPPsutt97KM888c/IMPj8/n5KSEj7zmc+wbNkympubz7J2SE5Opr6+Xs0+IkHW0NzK9iov2E+ezVfWU1n3Ubt8ckIMY4cmM3tyNmOzvBuvY4cmM3hgXBAr7x0RH/4TJ07k3nvv5bLLLiM6OprCwkIeeeQR7rzzTh544IGTN3wBvvSlLzFnzhxmzJjBVVddxcCBA8+6/oULF3LdddeRnZ2tG74ifWx/XQP/8do23ttdw56DR/Gb5YmLiWJ0ZhIXnZfuNdf4TTbZqQkh1S7fm8w512cbKyoqcqe/zGXz5s2MHz++z2oINZH++UV6Q1ub47fv7+VHr2yhsaWNK8dmegHvf41ISyQmDNrlTzCzEudcUSDXGfFn/iLSv+zYX889S9bz/u5DXDgynR/cdD4FGWe/So80Cn8R6RcaW1r5+fIP+fmbO0iMi+Hf509mwfS8iGnGOVdnDX8zewyYDex3zk3yp6UBvwPygd3AZ5xzh7pbRFd63PRHfdnkJtKfvberhnuWrOPD6qPMmZrD/5s9gYwgPTwVLrrS6PUEMOu0ad8EXnfOjQZe9//eLQkJCRw8eDDigvDEeP4JCQnBLkUkbNUeb+aeJev5zP+8S2NLG0/c8Ql+cnOhgr8Lznrm75x728zyT5s8B7jc//43wJvAN7pTQF5eHmVlZVRXV3dn8bB24k1eInJunHO8sqGS77ywkYNHGvnSpQXc/TdjwrrffV/r7m9qqHNuH4Bzbp+ZZXY2o5ktBBYCDB8+/GM/j42N1ZusRKTLKg4f59vLNvDnzfuZmJPC47d/gkm5qcEuK+z0+mHSOfco8Ch4XT17e3si0j+1tjmefHc3D766lTYH914/njsuzg+rLpuhpLvhX2Vm2f5ZfzawP5BFiYi0t3lfHd9csp4PSg/zyTFDuH/uJIalaZj0nuhu+L8A3Ab8yP9zWcAqEhHxNTS38pPXt/PLt3eSOiCWn9w8lRun5ERk78BA60pXz9/i3dzNMLMy4Dt4of97M/sCsBdY0JtFikjkWbHjAN9aup49B4+xYHoe37p+fL8cYydYutLb57Od/OiqANciIsKho018/w+beW51GfnpifzvFy/golEaGDHQ1C9KREKCc45layu476VN1B1v5itXnMdXrxxNQmx0sEvrlxT+IhJ0ew8e497n1/OX7QeYOmwQP7zpfMZnpwS7rH5N4S8iQdPS2sav/7qL//zzNqLN+N6NE7ll5giio3RDt7cp/EUkKNaVHeabz61n0746rh4/lPvmTCRn0IBglxUxFP4i0qeONrbw0J+28fiKXWQkxfPfn5vGrElZ6r7ZxxT+ItJnlm/dz78u3UD54eP83QXD+cascaQOiA12WRFJ4S8iva66vpH7XtrEix9UMCoziUX/cCGfyE8LdlkRTeEvIr3GOcei4jLuf3kzx5taufvqMfzD5SOJj1H3zWBT+ItIr9hZfYRvLV3Pyp01zMhP4wc3TWJUZnKwyxKfwl9EAqqppY3/eetDfrp8B/ExUfzwpvP526JhRKn7ZkhR+ItIwJTsOcQ9S9axreoIN0zO5juzJ5CZorfVhSKFv4j0WF1DMw/8cStPr9pDVkoCv/p8EVdPGBrssuQMFP4i0iOvbqzk28s2sL++kdsuzOdr144lKV7REur0LyQi3VJZ28B3XtjAqxurGJeVzP/cWsTUYYOCXZZ0kcJfRM5JW5vjmff28u+vbKGptY1vzBrHFy8tIFavUwwrCn8R6bJtVfXcs2Q9JXsOcfGodO6fez75GQODXZZ0g8JfRM6qobmVny3fwS/e+pCk+Bj+Y8EUbpqWq/F4wpjCX0Q65ZzjrW3V3PfiJnYeOMq8wlz+9YbxpCfFB7s06SGFv4h8zLGmFpasLuc37+xm+/4jDEsbwJN3zuCTY4YEuzQJEIW/iJxUWnOMJ9/dze/eL6WuoYVJuSk8uGAKsydn63WK/YzCXyTCOed498ODPP7Obv68uYooM66blMUdF+czbfhgtev3Uwp/kQh1rKmF59dU8MQ7u9hWdYS0gXF85fJRfG7mcLJT9Uat/k7hLxJhSmuO8fTKPTz7fim1x5uZmJPCA/Mn86kpOWraiSAKf5EI4Jzj3Z0H+c07u/nTpirMjFkTs7j94nyKRqhpJxIp/EX6seNNrTy/tpwnVuxma1U9gxNj+YfLzuOWmSP0svQIp/AX6YfKDh3jqZV7ePY9r2lnfHYK/z5/MjeqaUd8Cn+RfsI5x6pdNTyxYjevbaoEYNakLG6/qIBP5KtpR06l8BcJcw3NrSxbW87jK3azpbKeQYmx/L3ftJOrph3phMJfJExVHD7OUyv38Nv39nL4WDPjspL58afPZ87UXDXtyFkp/EXCiHOO93cf4ol3dvHqxiqcc1wzweu1c0FBmpp2pMsU/iJhoKG5lRc+qOCJFbvZtK+O1AGxfPHSAm6dOYK8wYnBLk/CkMJfJITtqz3O0yv38Nv3Sqk52sTYocn86CavaWdAnJp2pPt6FP5mdjfwRcAB64E7nHMNgShMJFI55yjZc4jH39nNHzdU4pzjbyYM5faLCpg5Uk07EhjdDn8zywXuAiY4546b2e+Bm4EnAlSbSERpaG7lpXX7eOKdXWworyMlIYYvXlLALTNHMCxNTTsSWD1t9okBBphZM5AIVPS8JJHIUlnb4Dft7OXg0SbGDE3iB/POZ25hDolxapmV3tHtPcs5V25mDwJ7gePAa865106fz8wWAgsBhg8f3t3NifQrzjlW7z3E4yu8pp1W57h6/FDuuCifC89LV9OO9LqeNPsMBuYABcBhYJGZ3eKce7r9fM65R4FHAYqKilwPahUJe40trbz0wT6eeGc368trSU6I4Y6L8/n8hflq2pE+1ZNryquBXc65agAzWwJcBDx9xqVEIlBVXQPPrNzD/763lwNHmhidmcT98yYxrzBXTTsSFD3Z6/YCM80sEa/Z5yqgOCBVifQjv31vL//v+Q20OsdV44Zyx8X5XKSmHQmynrT5rzKzxcBqoAVYg9+8IyKe1jbHI69vZ1JuKo/cXMjwdDXtSGjo0fWmc+47wHcCVItIv7NixwH21TbwrzdMUPBLSIkKdgEi/dnikjJSB8Ry9YTMYJcicgqFv0gvqT3ezKsbK5kzNYf4GA3FIKFF4S/SS15aV0FjSxsLpg8LdikiH6PwF+kli4rLGDs0mUm5KcEuReRjFP4ivWDH/nrWlh5mQVGeunRKSFL4i/SCRSVlxEQZcwtzg12KSIcU/iIB1tLaxpLV5Vw+NpOMpPhglyPSIYW/SIC9vb2a6vpGFhTlBbsUkU4p/EUCbHFJGekD47hynPr2S+hS+IsE0KGjTfx5037mTM0lNlr/vSR0ae8UCaAXPqigqbVNTT4S8hT+IgG0qKSUiTkpjM9W334JbQp/kQDZvK+ODeV1LJius34JfQp/kQBZXFJGbLQxZ6r69kvoU/iLBEBzaxvPrynn6vFDGTwwLtjliJyVwl8kAN7Ysp+DR5t0o1fChsJfJAAWl5QxJDmeT44eEuxSRLpE4S/SQweONLJ8y35uKswlRn37JUxoTxXpoefXlNPS5pivXj4SRhT+Ij3gnGNxSRlThg1i9NDkYJcj0mUKf5Ee2FBex5bKevXtl7Cj8BfpgcUlpcTFRPGpKTnBLkXknCj8RbqpsaWVZR9UcO3ELFIHxAa7HJFzovAX6abXN+/n8LFmNflIWFL4i3TTouJSslMTuHhURrBLETlnCn+Rbqiqa+CtbdXcNC2X6Ci9oF3Cj8JfpBuWrimnzcH86cOCXYpItyj8Rc6Rc45FxaUUjRhMQcbAYJcj0i0Kf5FztKb0MB9WH9UgbhLWFP4i52hxSRkDYqO5YbL69kv4UviLnIOG5lZe/KCC6yZlkRQfE+xyRLqtR+FvZoPMbLGZbTGzzWZ2YaAKEwlFr26spL6hhflq8pEw19NTl58Af3TOzTezOCAxADWJhKzFJWXkDR7AzIL0YJci0iPdPvM3sxTgk8CvAZxzTc65w4EqTCTUlB8+zl93HODT0/KIUt9+CXM9afYZCVQDj5vZGjP7lZmp35v0W0tXl+EcGrdf+oWehH8MMA34b+dcIXAU+ObpM5nZQjMrNrPi6urqHmxOJHhOjNs/c2Qaw9LUuinhryfhXwaUOedW+X9fjHcwOIVz7lHnXJFzrmjIEL3fVMLT+7sPsfvgMRboiV7pJ7od/s65SqDUzMb6k64CNgWkKpEQs7iklIFx0Vx3flawSxEJiJ729vkq8Izf02cncEfPSxIJLceaWvjDun3cMDmbxDj17Zf+oUd7snNuLVAUoFpEQtIr6ys52tTKgiI1+Uj/oSd8Rc5iUUkp+emJFI0YHOxSRAJG4S9yBnsPHmPlzhrmT8/DTH37pf9Q+IucwXOryzCDm6apb7/0Lwp/kU60tXl9+y8ZlUHOoAHBLkckoBT+Ip1Yuesg5YeP64le6ZcU/iKdWFxcRnJCDNdOVN9+6X8U/iIdqG9o5uUN+/jUlBwSYqODXY5IwCn8RTrw8vp9NDS3sUBNPtJPKfxFOrCouIzzhgxk6rBBwS5FpFco/EVOs7P6CMV7DrGgaJj69ku/pfAXOc1zq8uIMripMDfYpYj0GoW/SDutbY7nSsq5bMwQMlMSgl2OSK9R+Iu0s2LHASrrGjSIm/R7Cn+RdhaVlDEoMZarxmcGuxSRXqXwF/HVHmvm1Y2VzJmSQ3yM+vZL/6bwF/G9uK6CppY2NflIRFD4i/gWlZQxLiuZiTkpwS5FpNcp/EWA7VX1fFB6WOP2S8RQ+IsAi0vKiIky5qpvv0QIhb9EvJbWNpasKeeKcZlkJMUHuxyRPqHwl4j39vZqqusbNYibRBSFv0S8RcVlpA+M44px6tsvkUPhLxGt5mgTf95cxdzCXGKj9d9BIof2doloL6wtp7nV6VWNEnEU/hLRFpWUMSk3hfHZ6tsvkUXhLxFrU0UdGyvqWDBdT/RK5FH4S8RaXFJGXHQUN07JCXYpIn1O4S8RqamljefXlnP1hEwGD4wLdjkifU7hLxFp+db91BxtUpOPRCyFv0SkRcVlZCbHc+nojGCXIhIUCn+JONX1jSzfup9503KJUd9+iVDa8yXiLFtbTmub03AOEtF6HP5mFm1ma8zspUAUJNKbnHMsKi5j6rBBjMpMDnY5IkETiDP/fwI2B2A9Ir1uQ3kdW6vqWVCks36JbD0KfzPLA24AfhWYckR616KSUuJjopg9WX37JbL19Mz/YeDrQFtnM5jZQjMrNrPi6urqHm5OpPsamltZtraCaydmkTogNtjliARVt8PfzGYD+51zJWeazzn3qHOuyDlXNGTIkO5uTqTHXt+8n9rjzWryEaFnZ/4XAzea2W7gWeBKM3s6IFWJ9IJFJaVkpyZw0Xnq2y/S7fB3zt3jnMtzzuUDNwNvOOduCVhlIgFUWdvA29uq+fS0PKKj9IJ2EfXzl4iwdE05bQ6N2y/iiwnESpxzbwJvBmJdIoHmnGNRSSmfyB9MfsbAYJcjEhJ05i/93prSw+ysPqpB3ETaUfhLv7eouIwBsdFcPzk72KWIhAyFv/Rrx5taeemDCq47P4uk+IC0cor0Cwp/6dde21RJfWOLmnxETqPwl35tUXEZeYMHcEFBWrBLEQkpCn/pt8oPH2fFhweYPz2PKPXtFzmFwl/6rSUlZTgHn56mvv0ip1P4S7/knGPx6jIuHJnOsLTEYJcjEnIU/tIvvb/7EHsOHtMgbiKdUPhLv7SouJSk+BhmTcoKdikiIUnhL/3O0cYW/rB+Hzecn01inPr2i3RE4S/9zisbKjnW1KomH5EzUPhLv7OouJSCjIFMHzE42KWIhCyFv/Qrew8eY9WuGuZPz8NMfftFOqPwl35l8eoyzOCmabnBLkUkpCn8pd9oa3M8V1LGJaMyyE4dEOxyREKawl/6jZU7D1J++DgLijSIm8jZKPyl31hUUkZyQgzXTBga7FJEQp7CX/qFuoZmXtmwjxun5JAQGx3sckRCnsJf+oWX1+2joblNTT4iXaTwl35hUUkZozKTmJKXGuxSRMKCwl/C3s7qI5TsOcQC9e0X6TKFv4S9xSVlREcZ8wrVt1+kqxT+EtZa2xxLVpdz2ZghZKYkBLsckbCh8Jew9tcdB6isa2DBdA3iJnIuFP4S1hYVlzIoMZYrx2cGuxSRsKLwl7BVe6yZ1zZVMXdqLvEx6tsvci4U/hK2XlhXQVNLG/PV5CNyzhT+ErYWF5cyLiuZiTkpwS5FJOwo/CUsbauq54OyWhYUDVPffpFuUPhLWFpcUkZMlDF3ak6wSxEJSwp/CTvNrW0sWV3OleMySU+KD3Y5ImGp2+FvZsPMbLmZbTazjWb2T2dbZl9tA5sq6rq7SREA3t5WzYEjjRrETaQHYnqwbAvwL8651WaWDJSY2Z+cc5s6W+DgkUauf+QvjMtKZl5hLnOm5pKVqqcy5dwsKi4jIymOy8cOCXYpImGr22f+zrl9zrnV/vf1wGbgjIOrjMtO4d/mTGRAXDQ/fGULF/7odT73q5UsKi7lSGNLd0uRCFJztInXt3h9+2Oj1Wop0l3mnOv5SszygbeBSc65utN+thBYCDB8+PDpe/bsAWD3gaMsXVPO82vL2XPwGAmxUVwzIYt5hblcOjqDGP3Hlg48vmIX33txE3/850sZl6UunhIZzKzEOVcU0HX2NPzNLAl4C7jfObfkTPMWFRW54uLiU6Y551i99zBL15Tx0rp9HD7WTEZSHJ+aksO8wlzOz01VVz456fqf/IXoKOPFr14S7FJE+kxvhH9P2vwxs1jgOeCZswX/GdbB9BGDmT5iMN+ePZE3t+5n6Zpynlm5l8dX7Oa8IQOZV5jL3MJc8gYn9qRcCXMbK2rZtK+O++ZMDHYpImGv2+Fv3un4r4HNzrmHAlFMXEwU10zM4pqJWdQea+blDftYurqcB1/bxoOvbWNGQRrzCnO5/vxsUgfEBmKTEkYWl5QRFx3FjVPUt1+kp7rd7GNmlwB/AdYDbf7kbznnXu5smY6afbqitOYYy9aWs2RNOTurjxIXE8XV4zOZOzWXy8dmEhej+wP9XVNLGzN/+DoXjkznZ5+bFuxyRPpUSDX7OOf+CvRJY/ywtET+8crRfOWKUawvr2XJ6nJe/KCCl9dXMjgxltmTc5hbmMu04YN0f6CfemPLfmqONjG/SIO4iQRCj9r8+5qZMTlvEJPzBnHvDeP56/YDLFlTzu+LS3lq5R5GpCcyd2ou8wpzyc8YGOxyJYAWl5SSmRzPpaMygl2KSL8QVuHfXmx0FFeMy+SKcZnUNzTzxw2VLF1TziNvbOcnr29n2vBBzCvMZfbkHAYPjAt2udID1fWNLN9azZcuHakuwCIBEpB+/l3V3Tb/c7Gv9jjL1lawdHU5W6vqiY02Lh+bybzCXK4cl0lCrF76EeqaW9tYV1bLql0HWbWzhpI9hzjS2MKf/+9ljMpMCnZ5In0uJPv5n4u+CP8TnHNs3lfP0jVlLFtbwf76RpITYpg9OZu5U3P5RH4aUVG6PxAKGltaWVdWy8oPD7Jqlxf2x5tbARidmcQFI9OYNTGbS0aryUcik8K/m1rbHO98eIClq8v548ZKjjW1kjtoAHMLc5hXmKezyT7W0NzKmr2HT57Zr957iMYWr8PYuKxkZo5M54KCNGYUpGnUThEU/gFxrKmF1zZWsWRNOX/dXk2bg8l5qcydmsuNU3PIUNgE3PGmVlbvPcTKnV7Yry09TFNrG2YwITvllLAflKj7MyKnU/gH2P76Bl5YW8HSNeVsrKgjOsq4dHQG8wpzuWZCFgPidH+gO442tlC85xCrdnrNOOvKDtPc6oiOMiblpHCBH/ZF+Wl6WE+kCxT+vWhbVT1L15SzbE05FbUNDIyLZtakbG6alsvMkelE6/5Ap+obmine7Z3Zr9xVw4byWlrbHDFRxvl5qVxQkM7MkV7YJ8WHbQczkaBR+PeBtjbHql01LF1TxivrK6lvbCErJYEbp+YwMSeFrJQEslITGJqSELE9h2qPNfPe7pqTZ/YbK2ppcxAbbUwdNogLCtK5YGQa00cMJjFOYS/SUwr/PtbQ3MqfN1exdHU5b22rpqXt1N/V4MRYhvoHg6x2fw71/8xOTSB1QGzYP3Vcc7SJ93YdZOXOGlbtqmFLZR3OeWMxFQ4bxAUj05lZkEbh8MFqKhPpBQr/IDra2ELF4eNU1jWwr7aBqtoGKusaqDrx97oGDhxp+thy8TFRJ68Usk8cHNpdPWSnJjAkOT6kXkxSXd/Ie7tqTvbG2VpVD0BCbBTTRwz2zuwL0pgybFDEXv2I9KWQGtsn0gyMj2H00GRGD03udJ6mljb21zdQ6R8YKmtPPTis3nuIqtpGmlrbTlnODDKS4k+5emh/cDhxsOit9vL9dQ2s3FXj98Y5yIfVRwFIjItm+ojB3Dg1hwsK0picN0iD6In0Ewr/AIqLiSJvcOIZ3zvgnKPmaNPJq4bK2kYqa70risq6RvYePMaqnQepa/j4ay2T4mM+alpKSSArNZ6s1AHewSIlgaGp8WQMjD/rw2sVh4+fPKtftauGXQeOnlz/J/IHs6BoGBcUpDEpNzWkrkhEJHAU/n3MzEhPiic9KZ6JOamdzne8qbXDq4cTVxU7dhyg+kgjrafdh4iJMoamJDA0Jd4/UAwgKzWexLgY1pZ6D1aV1hwHICUhhhkFafzdjOFcMDKNCdkpGjtHJEIo/EPUgLhoCjIGUnCG0Ulb2xwHjjRSWdvu4FDn3Y/YV9vAln31vLm1mmNN3lAJgxJjmZGfxh0XFXDByDTGZaWoC6tIhFL4h7Hok2f5CUwZ1vE8zjnqG1uoPdZM7qABGs9IRACFf79nZqQkxJKSoCdpReQjauAVEYlACn8RkQik8BcRiUAKfxGRCKTwFxGJQAp/EZEIpPAXEYlAfTqqp5kdBzb22QYDLxWoDXYR3RTOtYPqDzbVH1wTnXMDArnCvn7I60ighyXtS2b2qHNuYbDr6I5wrh1Uf7Cp/uAys+pAr7Ovm30O9/H2Au3FYBfQA+FcO6j+YFP9wRXw7OzrZp/icD7zFxEJht7Izr4+83+0j7cnItIfBDw7+/TMX0REQoO6eoqIRKCIDX8zm2VmW81sh5l905/2azP7wMzWmdliM0vqZNl7/OW2mtm1Z1pnH9dvZna/mW0zs81mdlcny95mZtv9r9vaTZ9uZuv9dT5iZr02+H8n9V9pZqvNbIOZ/cbMOuyNFuz6zewxM9tvZhvaTXvAzLb4+85SMxvUybId7iNmVmBmq/zP9Dszi+uN2s9Q/3fNrNzM1vpf14dZ/VPNbKVfe7GZzehk2aDv+yHDOdetL2AWsBXYAXzTn1YArAK2A78D4jpZ9h5/ua3AtWdaZ298AdHAh8BIIA74AJgApLSb56GOavDn+wCI9z/vh/76OlxnH9d/B/AkEOXPl9nBsmnATv/Pwf73g/2fvQdcCBjwCnBdH9dfCozx57kP+EKI1v9JYBqwod20a4AY//sfAz/u6uf2f/Z74Gb/+18AX+7F/b+j+r8LfK1tsJQgAAAJZklEQVQ7/24hUv9rJ/69geuBN0N03xkGLAc24z3z9E/+9AX+39uAojMs32FG0sXsbf/VrTN/M4sGfgZch/ef9rNmNgFvp/9P59xo4BDwhQ6WnQDcDEz0P8jPzSz6DOvsDTOAHc65nc65JuBZYI5zrs6v0YABQEc3ROYAzzrnGp1zu/D+EWZ0ts6+rB/4MnCfc64NwDm3v4NlrwX+5Jyrcc4dAv4EzDKzbLyD37vO25ueBOb2Yf2fBhqdc9v8ef7kTwu5+p1zbwM1p017zTnX4v91JZDXwaId/rv5+9uVwGJ/vt/0Vu1+rR+rv4tCuX4HpPjfpwIVHSwa9H0HaAH+xTk3HpgJfMXPuQ3ATcDbnS14low8a/aerrvNPp2FT1d2gFAIz1y8s8wTyvxpmNnjQCUwDvipP+1GM7vvLMt2us5e0Nm2zgP+1r/sfcXMRvv1F5nZr7pQf1kQ688CYs3sRHe2+XhnSaFY/9nciXf2iJnlmNnL/vTOak8HDrc7eASr9n/0m60eM7PBEFb1/zPwgJmVAg/itS6E3L7jnNvnnFvtf1+PdwWQ65zb7JzbepbFA3rw7W74d/ZL7HAHCMHw7Kg9zwE45+4AcvD+Uf7Wn/aCc+7bZ1m203X2gs62FQ80OK8/8C+BxwCcc8XOuS+eZdlg19+Gd0X4n2b2HlCPd5YUivV3yszuxav7GQDnXIVz7kT7eSjX/t94Jw9TgX3Af0BY1f9l4G7n3DDgbuDXENr7jpnlA4V4zTWdzdNrB9/uhn9Hv6zoDqadCNRQC88y/LNKXx7tLhOdc6147WYdNTt0tuwZ1xlgZ6rhOX/aUmDyOS6b18H03tBhDf5l96XOuRl4l7/bu7osfVt/h/wbiLOBz/nNB6frrPYDwKB2N7j7vHbnXJVzrtVvMvwl3lnm6UK2fuA2YIn//SLOrf4+33fM60zyHPDPJ5qbO9KbB9/uhn9Hv8S9dG0HCIXwfB8Y7fdQiMM743zBzEbByTb/TwFbOlj2BeBmM4s3swJgNN7Nog7X2Zf1A8/jXf4BXAZs62DZV4FrzGywf2l/DfCqc24fUG9mM/3P/3lgWV/Wb2aZAGYWD3wD78ZhKNb/MWY2y6/5RufcsU5m6/Bz+weK5XhNXeAFWZ/VDuC3e58wD68N+nQhWz9eVlzmf38lHZ84hMS+Y2axeMH/jHNuydnmbyewB99u3rGOwbtTXsBHd/0n4h1x29/x/z8dLDuRU3vL7MS7auhwnd2pr4uf4Xq8cPwQuBfvQLgCWI+34z+D3/sHuBHvRuqJZe/1l9tKu14Bp6+zt2rvbFvAIOAP/md4F5jiTy8CftVu2Tvx7rXsAO5oN73I/+wfAv+F/xBgH9b/AF5z21a8MyJCsX7gt3hNI814/yG/4NdSCqz1v37hz5sDvHy2fQSvB817/noWAfG9+LvvqP6n/P1mHd6JRHaY1X8JUIKXG6uA6SG67xjeDeWHO/n5m3TS24czZCRdyN7Tv7r9hK/fD/hhvOB+zDl3v5mNxLsJkQasAW5xzjWa2Y3+B/q2v+y9/j9CC95/8lc6W2e3ihMRCUFmdgnwF7wDbZs/+Vt4J8M/BYbgDeK21jl3rZnl4B28rveX7zAjO8veM9bS3fAXEZHwFbFP+IqIRDKFv4hIBFL4i4hEoC6Fv5klmNl75g16ttHMvudPL7AuDOZkZrvN7C+nTVtr7QZmEhGRvtPVM/9G4Ern3BS8JwBnmdlMzm08iWQzO/G4/vge1CwiIj3UpfB3niP+X2P9L8e5jSfxe/zhEoDP4vXVBbzHnM3sL+YN57vazC7ypz9lZnPazfeM321URER6oMtt/uaNvLkW2I83Gt6HnNt4EovxRq0D7+nZ9i9U3g/8jXNuGt4B4hF/+q/whinGzFKBi4CXERGRHuly+Dtv3I+peI8OzwA6aro500MDNcAhM7sZ7ynO9o/AxwK/NLP1eE+qTfC3+RYwyn/s/7PAc+0ONiIi0k0dvinpTJxzh83sTbyxqAeZWYwfyHlAhT/mdIk/e/sB3cAbLO1nwO2nrfZuoAqYgndAamj3s6eAz+GNI3LnudYrIiIf16XwN7MhQLMf/AOAq/Fu9p4YzOlZ/MGcnDci5tROVrUUyMYbYCmn3fRUoMw51+aPjNh+hNAn8MYMqXTObezqBxMRkc519cw/G/iNf1YfBfzeOfeSmW0CnjWz7+ONJ/HrM63EeS8v+DGAnfqKzJ8Dz5nZArwDytF2y1SZ2Wa8EStFRCQAQn5sHzNLxBsEaZpzrjbY9YiI9Ach/YSvmV2NN6b+TxX8IiKBE/Jn/iIiEnghfeYvIiK9Q+EvIhKBFP4iIhFI4S8iEoEU/hJx/IEE/64byz1hZvO7sdzt/rtYRUKGwl/Cmpmd8xAlQD5wzuHfA7dz6hPtIkGn8JeQZ2afN7N1/suEnvLPwB8ys+XAj81soJk9Zmbvm9maE8OAdzZUOPAj4FL/hUJ3+yPWPuAvv87M/t5f3szsv8xsk5n9Acg8S53f9texwcwe9ZefDxQBz/jbG9B7vymRrlM/fwlpZjYRWAJc7Jw7YGZpwENABjDHOddqZj8ANjnnnjazQXhjQRXijTLb5pxrMLPRwG+dc0VmdjnwNefcbH8bC4FM59z3zSweWAEs8NfxZWAWMBTYBHzRObeYDphZmnOuxv/+KbxhUF70B0L8mnOuuBd+RSLd0p1LZpG+dCWw2Dl3AMA5V+OPC7XIH0QQ4BrgRjP7mv/3BGA4UAH8l5lNBVqBMZ1s4xpgcrv2/FRgNPBJvANGK96ItW+cpdYrzOzrQCKQBmzk1PdWiIQMhb+EOqPj90QcPW2eTzvntp6yoNl36Xyo8NO38VXn3KunLX99J9v++ArMEvAGKCxyzpX6207oyrIiwaA2fwl1rwOfMbN08JpWOpjnVeCr5l8SmFmhPz0V2OecawNu5aOhwuuB5NOW/7KZxfrLjzGzgcDbwM3+PYFs4Ioz1Hki6A+YWRLeUOcnnL49kaDTmb+ENOfcRjO7H3jLzFrxhg4/3b8BDwPr/APAbmA2nQ8Vvg5oMbMP8N4X8RO8HkCr/eWr8d5HvRSv2Wk9sA146wx1HjazX/rz7gbeb/fjJ4BfmNlx4ELn3PFz+iWI9ALd8BURiUBq9hERiUBq9hE5R2a2FCg4bfI3Tr9hLBLK1OwjIhKB1OwjIhKBFP4iIhFI4S8iEoEU/iIiEej/A9e2sLkHzODoAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "log3['count'].plot()\n",
    "log3.resample('3H').mean().plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  7. 分析一天中api响应时间，如下图所示，可以看到在业务高峰时间段，最大响应时间和平均响应时间都有所上升 5分\n",
    "log2[['res_time_max','res_time_avg']].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.frame.DataFrame"
      ]
     },
     "execution_count": 280,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# type(log[['count']])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 8. 分析连续的几天数据，可以发现，每天的业务高峰时段都比较相似 5分\n",
    "log['2019-5-1' : '2019-5-10']['count'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-03 00:00:11</th>\n",
       "      <td>324298</td>\n",
       "      <td>7</td>\n",
       "      <td>1221.54</td>\n",
       "      <td>95.81</td>\n",
       "      <td>289.76</td>\n",
       "      <td>174.0</td>\n",
       "      <td>2018-11-03 00:00:11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-03 00:01:11</th>\n",
       "      <td>324424</td>\n",
       "      <td>2</td>\n",
       "      <td>283.78</td>\n",
       "      <td>129.13</td>\n",
       "      <td>154.65</td>\n",
       "      <td>141.0</td>\n",
       "      <td>2018-11-03 00:01:11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-03 00:02:11</th>\n",
       "      <td>324524</td>\n",
       "      <td>7</td>\n",
       "      <td>1232.55</td>\n",
       "      <td>121.59</td>\n",
       "      <td>236.36</td>\n",
       "      <td>176.0</td>\n",
       "      <td>2018-11-03 00:02:11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-03 00:03:11</th>\n",
       "      <td>324582</td>\n",
       "      <td>4</td>\n",
       "      <td>668.57</td>\n",
       "      <td>117.25</td>\n",
       "      <td>284.15</td>\n",
       "      <td>167.0</td>\n",
       "      <td>2018-11-03 00:03:11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-03 00:04:11</th>\n",
       "      <td>324706</td>\n",
       "      <td>2</td>\n",
       "      <td>410.74</td>\n",
       "      <td>195.88</td>\n",
       "      <td>214.86</td>\n",
       "      <td>205.0</td>\n",
       "      <td>2018-11-03 00:04:11</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-26 23:55:17</th>\n",
       "      <td>13163786</td>\n",
       "      <td>10</td>\n",
       "      <td>2579.03</td>\n",
       "      <td>99.94</td>\n",
       "      <td>646.79</td>\n",
       "      <td>257.0</td>\n",
       "      <td>2019-05-26 23:55:17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-26 23:56:17</th>\n",
       "      <td>13163835</td>\n",
       "      <td>4</td>\n",
       "      <td>843.59</td>\n",
       "      <td>174.51</td>\n",
       "      <td>295.54</td>\n",
       "      <td>210.0</td>\n",
       "      <td>2019-05-26 23:56:17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-26 23:57:17</th>\n",
       "      <td>13163924</td>\n",
       "      <td>6</td>\n",
       "      <td>1342.87</td>\n",
       "      <td>175.63</td>\n",
       "      <td>342.65</td>\n",
       "      <td>223.0</td>\n",
       "      <td>2019-05-26 23:57:17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-26 23:58:17</th>\n",
       "      <td>13164031</td>\n",
       "      <td>7</td>\n",
       "      <td>1875.26</td>\n",
       "      <td>85.10</td>\n",
       "      <td>665.27</td>\n",
       "      <td>267.0</td>\n",
       "      <td>2019-05-26 23:58:17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2019-05-26 23:59:17</th>\n",
       "      <td>13164116</td>\n",
       "      <td>7</td>\n",
       "      <td>1880.12</td>\n",
       "      <td>196.34</td>\n",
       "      <td>510.56</td>\n",
       "      <td>268.0</td>\n",
       "      <td>2019-05-26 23:59:17</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>51154 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                           id  count  res_time_sum  res_time_min  \\\n",
       "created_at                                                         \n",
       "2018-11-03 00:00:11    324298      7       1221.54         95.81   \n",
       "2018-11-03 00:01:11    324424      2        283.78        129.13   \n",
       "2018-11-03 00:02:11    324524      7       1232.55        121.59   \n",
       "2018-11-03 00:03:11    324582      4        668.57        117.25   \n",
       "2018-11-03 00:04:11    324706      2        410.74        195.88   \n",
       "...                       ...    ...           ...           ...   \n",
       "2019-05-26 23:55:17  13163786     10       2579.03         99.94   \n",
       "2019-05-26 23:56:17  13163835      4        843.59        174.51   \n",
       "2019-05-26 23:57:17  13163924      6       1342.87        175.63   \n",
       "2019-05-26 23:58:17  13164031      7       1875.26         85.10   \n",
       "2019-05-26 23:59:17  13164116      7       1880.12        196.34   \n",
       "\n",
       "                     res_time_max  res_time_avg           created_at  weekday  \n",
       "created_at                                                                     \n",
       "2018-11-03 00:00:11        289.76         174.0  2018-11-03 00:00:11        5  \n",
       "2018-11-03 00:01:11        154.65         141.0  2018-11-03 00:01:11        5  \n",
       "2018-11-03 00:02:11        236.36         176.0  2018-11-03 00:02:11        5  \n",
       "2018-11-03 00:03:11        284.15         167.0  2018-11-03 00:03:11        5  \n",
       "2018-11-03 00:04:11        214.86         205.0  2018-11-03 00:04:11        5  \n",
       "...                           ...           ...                  ...      ...  \n",
       "2019-05-26 23:55:17        646.79         257.0  2019-05-26 23:55:17        6  \n",
       "2019-05-26 23:56:17        295.54         210.0  2019-05-26 23:56:17        6  \n",
       "2019-05-26 23:57:17        342.65         223.0  2019-05-26 23:57:17        6  \n",
       "2019-05-26 23:58:17        665.27         267.0  2019-05-26 23:58:17        6  \n",
       "2019-05-26 23:59:17        510.56         268.0  2019-05-26 23:59:17        6  \n",
       "\n",
       "[51154 rows x 8 columns]"
      ]
     },
     "execution_count": 291,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 9. 分析周末访问量是否有增加。 5分\n",
    "log[(log['weekday'] == 5) | (log['weekday'] == 6)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>count</th>\n",
       "      <th>res_time_sum</th>\n",
       "      <th>res_time_min</th>\n",
       "      <th>res_time_max</th>\n",
       "      <th>res_time_avg</th>\n",
       "      <th>created_at</th>\n",
       "      <th>weekday</th>\n",
       "      <th>weekend</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:00:07</th>\n",
       "      <td>2019162542</td>\n",
       "      <td>8</td>\n",
       "      <td>1057.31</td>\n",
       "      <td>88.75</td>\n",
       "      <td>177.72</td>\n",
       "      <td>132.0</td>\n",
       "      <td>2018-11-01 00:00:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:01:07</th>\n",
       "      <td>162644</td>\n",
       "      <td>5</td>\n",
       "      <td>749.12</td>\n",
       "      <td>103.79</td>\n",
       "      <td>240.38</td>\n",
       "      <td>149.0</td>\n",
       "      <td>2018-11-01 00:01:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:02:07</th>\n",
       "      <td>162742</td>\n",
       "      <td>5</td>\n",
       "      <td>845.84</td>\n",
       "      <td>136.31</td>\n",
       "      <td>225.73</td>\n",
       "      <td>169.0</td>\n",
       "      <td>2018-11-01 00:02:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:03:07</th>\n",
       "      <td>162808</td>\n",
       "      <td>9</td>\n",
       "      <td>1305.52</td>\n",
       "      <td>90.12</td>\n",
       "      <td>196.61</td>\n",
       "      <td>145.0</td>\n",
       "      <td>2018-11-01 00:03:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-11-01 00:04:07</th>\n",
       "      <td>162943</td>\n",
       "      <td>3</td>\n",
       "      <td>568.89</td>\n",
       "      <td>138.45</td>\n",
       "      <td>232.02</td>\n",
       "      <td>189.0</td>\n",
       "      <td>2018-11-01 00:04:07</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             id  count  res_time_sum  res_time_min  \\\n",
       "created_at                                                           \n",
       "2018-11-01 00:00:07  2019162542      8       1057.31         88.75   \n",
       "2018-11-01 00:01:07      162644      5        749.12        103.79   \n",
       "2018-11-01 00:02:07      162742      5        845.84        136.31   \n",
       "2018-11-01 00:03:07      162808      9       1305.52         90.12   \n",
       "2018-11-01 00:04:07      162943      3        568.89        138.45   \n",
       "\n",
       "                     res_time_max  res_time_avg           created_at  weekday  \\\n",
       "created_at                                                                      \n",
       "2018-11-01 00:00:07        177.72         132.0  2018-11-01 00:00:07        3   \n",
       "2018-11-01 00:01:07        240.38         149.0  2018-11-01 00:01:07        3   \n",
       "2018-11-01 00:02:07        225.73         169.0  2018-11-01 00:02:07        3   \n",
       "2018-11-01 00:03:07        196.61         145.0  2018-11-01 00:03:07        3   \n",
       "2018-11-01 00:04:07        232.02         189.0  2018-11-01 00:04:07        3   \n",
       "\n",
       "                     weekend  \n",
       "created_at                    \n",
       "2018-11-01 00:00:07    False  \n",
       "2018-11-01 00:01:07    False  \n",
       "2018-11-01 00:02:07    False  \n",
       "2018-11-01 00:03:07    False  \n",
       "2018-11-01 00:04:07    False  "
      ]
     },
     "execution_count": 293,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 判断是否是周末 ，是不是5，6\n",
    "log['weekend'] = log['weekday'].isin({5, 6})\n",
    "log.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "weekend\n",
       "False    7.016846\n",
       "True     7.574989\n",
       "Name: count, dtype: float64"
      ]
     },
     "execution_count": 294,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对weekend 进行分组， 对count列 求平均值,可以发现，周末的下午和晚上，比非周末访问量多一些\n",
    "log.groupby('weekend')['count'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "weekend  created_at\n",
       "False    0              3.239120\n",
       "         1              1.668388\n",
       "         2              1.162551\n",
       "         3              1.086705\n",
       "         4              1.155556\n",
       "         5              1.136364\n",
       "         6              1.000000\n",
       "         7              1.000000\n",
       "         8              1.000000\n",
       "         9              1.080000\n",
       "         10             1.239011\n",
       "         11             2.031690\n",
       "         12             4.195845\n",
       "         13             6.668042\n",
       "         14             8.260503\n",
       "         15             8.934448\n",
       "         16             8.466504\n",
       "         17             6.784996\n",
       "         18             6.717731\n",
       "         19             8.655913\n",
       "         20            10.536496\n",
       "         21            10.846906\n",
       "         22             9.034164\n",
       "         23             5.946834\n",
       "True     0              3.467782\n",
       "         1              1.741849\n",
       "         2              1.161826\n",
       "         3              1.050000\n",
       "         4              1.076923\n",
       "         5              1.333333\n",
       "         6              1.000000\n",
       "         7              1.000000\n",
       "         8              1.071429\n",
       "         9              1.144928\n",
       "         10             1.254111\n",
       "         11             1.992958\n",
       "         12             4.031889\n",
       "         13             6.905772\n",
       "         14             8.851321\n",
       "         15             9.858422\n",
       "         16             9.420550\n",
       "         17             7.334743\n",
       "         18             7.342150\n",
       "         19             9.270430\n",
       "         20            11.173609\n",
       "         21            11.695043\n",
       "         22            10.419916\n",
       "         23             7.025452\n",
       "Name: count, dtype: float64"
      ]
     },
     "execution_count": 297,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log.groupby(['weekend', log.index.hour])['count'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAELCAYAAADJF31HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8nFd96P/Pd2YkjZbRjKzN2ix5d+IldmJoQiBhDXsCffFj+XEpYWlCKVBu2dpLF7hAS4HLBdrSkksIuZSmEEhLGiAkpAlJyEK8xI5teV9k7YslzWiXZs7943lGHstaRjPPbJrv+/Xyy6OZZ57nPGPp66Nzvud7xBiDUkqp3OfKdAOUUko5QwO6UkqtEBrQlVJqhdCArpRSK4QGdKWUWiE0oCul1AqhAV0ppVYIDehKKbVCaEBXSqkVwpPOi1VVVZmWlpZ0XlIppXLe3r17+40x1Usdt2RAF5HvAW8Ceo0x2+znvgq8GZgCTgHvM8YMLXWulpYW9uzZs9RhSimlYojIuXiOi2fI5fvA6+Y89zCwzRizAzgO/PmyWqeUUspxSwZ0Y8zjwIU5zz1kjJmxv3wGaExB25RSSi2DE5Oi7wd+6cB5lFJKJSGpgC4inwVmgB8ucsxtIrJHRPb09fUlczmllFKLSDigi8h7sSZL320WKapujLnDGLPbGLO7unrJSVqllFIJSihtUUReB3wGuNEYM+Zsk5RSSiViyR66iNwDPA1sFpF2EfkA8A+AD3hYRJ4XkX9OcTuVUkotYckeujHmXfM8fWcK2qKUUlktEjH8urWHGzdXU+RxZ7o5l9Gl/0opFae7njrLbT/Yy0/2tme6KfPSgK6UUnE43TfCVx48CsATx/sz3Jr5pbWWi1JK5aJwxPDJew/gLXDz0g1V/PZUPzPhCB53dvWJs6s1SimVhe588jT72ob4/M1b+f2rGwlNzHCgfcnyVWmnAV0ppRZxsjfE1x46zk1X1nLLznqu31CJS+DxLBx20YCulFILmAlH+MS9ByktdPOlt25HRAiUFLKjMcDjJ7Jv5bsGdKWUWsAdT5zmwPkh/uct26j2Fc0+f8PGKg6cH2J4bDqDrbucBnSllJrHse4Q33j4BG/Yvpo37ai75LWXbaomYuCpU9k17KIBXSml5pgOR/jkvQfweT184ZZtiMglr+9sCuAr8mTdsIsGdKWUmuN7T57hhY5hvviWbVSWFV32eoHbxXXrK3n8eD+L1CZMOw3oSik1xyOtvVzV6Of12+sWPOZlm6rpGBrnTP9oGlu2OA3oSikVwxhDa3eQ7Y3+RY+7caNVDvyJE9kzjq4BXSmlYrQPjhOamOGKuvJFj1tTWUJzZQmPH8+ecXQN6EopFaO1KwiwZEAHuGFjNU+fHmBqJpLqZsVFA7pSSsU40hVEBLas9i157Ms2VjE2FWZf22AaWrY0Degq5/10bzv/+OjJTDdDrRCtXUHWVpZSUrh07cLr1lficUnWDLtoQFc5yxjDVx48yifuPcDXHz7OxHQ4001SK0BrVyiu4RYAn7eAq9dUZM3EqAZ0lZOmZiJ84scH+PZjp9je4CccMRztDmW6WSrHhSamabswxhV1Sw+3RL1sYxWHOocZGJlMYcviowFd5ZzQxDTv//5z3Le/g0/etIlvv/tqAA51DGe4ZSrXHbM7BfH20MHKRzcGnjyZ+V66BnSVU3qCE7z9O8/wzOkBvvq2HXzklRtprCim3OvhcGcw081TOW45GS5R2xv8BEoKsmLYRXcsUjnjRE+IW+96jqGxKe689UXcuMla2CEibK33c7hTe+gqOUe6QviLC6jze+N+j9slXL+hiidO9GGMuazuSzppD13lhPGpMO+84xmmwhF+dPt1s8E8altDOUe7Q0yHsyMfWOWmI11BrqjzLTso37Cxip7gJCd6R1LUsvhoQFc5obU7yMDoFF+4ZSvbGi5fkr213s/UTISTGf6BUrkrHDEc6w4ua7gl6mV2GYBMpy9qQFc54Yg9Pj5fMLeet34IdRxdJerswCgT0xGuTCCg1weK2VBTxuMZHkfXgK5yQmtXkHKvh4ZA8byvr60qo7jArZkuKmGJTIjG2lZfzpl+HXJRaklHuoJcWV++4Nim2yVcUeeb7ckrtVytXUE8LmFjbVlC76/1e+kJTma0ProGdJX1whHD0ThW70UzXSKR7NlwQOWO1q4Q66vLKPK4E3p/rc/L1EyEoQzuM6oBXWW9cwOjjE+Hlxzb3NZQzuhUmHMXxtLUMrWStNoZLolabac6dgcnnGrSsi0Z0EXkeyLSKyKHYp5bJSIPi8gJ+++K1DZT5bMj9tjmlfVL99BBV4yq5RscnaJreCLh8XOA2nJrq7qebA7owPeB18157s+AR4wxG4FH7K+VSokjndbY5oaaxcc2N9aWUeAWzXRRy5bshChAjc/qoWd1QDfGPA5cmPP0LcDd9uO7gbc43C6lZh3pCrKhZumxzSKPm401Pl0xqpbtiBMBfbaHnrkiXYmOodcaY7oA7L9rnGuSUpdqtTNc4rGtoZzDncGs2oldZb/WrhDVviKqfUUJn6PI42ZVaWF299CTJSK3icgeEdnT15cdReBV7ugfmaQnOBn3Yo+t9X4ujE5ldGJK5R5rQjTx3nlUbbk3JwN6j4jUAdh/9y50oDHmDmPMbmPM7urq6oUOU2pe0bHNeAN6dMXooQ4dR89ljx3rpTeUnsA4HbZKRiST4RJVW16Uk0Mu9wPvtR+/F/iZM81R6lLLnazasrocEXQcPYed7hvh1rue4w/u/B1jUzMpv96pvhGmwokt+Z9rdbk369MW7wGeBjaLSLuIfAD4MvAaETkBvMb+WinHHekMUu/3UlFaGNfxpUUe1lWVag89h91/oBMRON4T4lM/OZjy+RAnMlyiasq99I9MMpOhqp9L1kM3xrxrgZde5XBblLrMkQTGNrfW+9lzdm5ilsoFxhjuP9DJi1tW8fLNNfzdg0fZ3uDnQzeuT9k1j3QGKfS4WFdVmvS5asuLMAb6Riap889fdyiVdKWoyloT02FO9Y3GneESta2hnM7hCS6MTqWoZSpVDncGOd03ys076/nQjet44446vvLg0ZSWpW3tCrGptgyPO/lwuLo8mouemXF0Degqa53oGSEcMcse24yuGNVx9Nzznwc68biEN2yrQ0T46tt2sKnWx0fv2c+5gVHHr2eMsTJcVic/3AJWlgtA93BmxtE1oKusdaTLCsjLH3LRTJdcFIkY/vNAJzdsqp6dMykp9PCd91wDwO0/2Ov4JGlfaJKB0SlHxs/hYkBPV4bOXBrQVdZq7QpRWuhmzaqSZb0vUFJIQ6BYe+g5Zm/bIJ3DE9x8Vf0lzzdXlvKtd+1KySRpvHWC4lVZWojHJRnLRdeArrLWkU5rQtTlWv6mu9EVoyp33P98J94CF6+5svay127cVM2nXruFnx/s4juPn3bsmq1dIQDHhlxcLqHGV0T3sI6hKzUrEjGzm1okYmu9nzP9o4QmMlebWsVvJhzhFy908aoraiktmj/57kM3ruPVV9TyjV8fdywtsLUrSEOgGH9JgSPnAyt1UYdclIrRPjjOyORM4tuB2StGoz0wld1+e2qAgdGpy4ZbYokIr91ay8R0xLGa98nWQJ9PbXmRTooqFevIMpf8z6WZLrnl/uc78Xk9vHzz4uVBNtVawfdET/L/UVtpsSOOTYhGrc5gPRcN6CorHekK4hLYvDqx3lONr4iqsiLNdMkBE9NhHjrczeu2rl6yRHK0Jv7xnuQ3Yz7RM0LEOLNCNFZNuZfgxAzjU2FHzxsPDegqKx3pDLKuugxvQWL7O4oIW+vLtYeeAx471ktocoabdy483BJVWuShsaKY4w700J1c8h/r4uKi9PfSNaCrrNTaFUy6WNK2hnJO9I4wMZ3+npKK3/0HOqkqK+S6dZVxHb+p1scJB3rord1BiguWnxa7lFoN6EpdNDw2TcfQeNK5wVvr/YQjxpHenEqN0MQ0j7T28sbtdXEvvd9YW8bp/hGmk8x0ae0Ksnm1D3cCabGLWe23NsnIRNVFDegq6yQ7IRoVfX/0V2uVfR4+0sPkTISbdzbE/Z5NNT6mwyapUgDGGI52hxzPcAFrDB2gNwP1XDSgq7iMT4X53Zn0VDB0amyzoaIYEegY0t2LstX9BzpprCjm6jWBuN8TzXRJZmK0OzjB0Ni04+PnAL4iD8UFbu2hq+z11/cf4u3feZqfPd+R8msd6Qomvb8jQIHbRXVZEV1D4w61TDnpwugUT57o581X1SMS/7DHhpqy2XrpiTpqr0/Y4tAK0Vgiwmp/ZlIXNaCrJZ3qG+Ene9sp9Lj4H/e9wOm+5CekFnOkM/kJ0ai6QDFdGVrkoRb34KFuZiJm0cVE8ykudNNUUZLUxGh0WG9LCoZcwEqb1YCustL/fvg43gI39/3RSyj0uPjjf92fssyRqZkIJ3pDjv0qXO/30jmsPfRstK9tkGpfEVsSWGuwqbYsuR56d4iGQDHlXueW/Meyeug6hq6yzJHOIA8c7OJ917ewrcHP19++k9auIP/zgSMpud6pvhGmw8ax6nd1/mK6hiZSvo2ZWr5Wezeq5Qy3RG2s9XGmf5SpmcQyXVoT2AlrOWrt1aLp/r7TgK4W9fWHj+HzerjtZdYWYK/YUsOHblzPvz7bxv0HOh2/3pFOZzJcouoDXsanwwyPa5GubDITjnCiZ4QrElwJvKm2jJmI4WwCmS4T02FO942kJMMlqrbcy+RMJO3fdxrQ1YL2tQ3y69Zebr9h3SXV6D5x0yauaa7gz396kDP9zu4i09oVxFvgYq0D+zsC1AesfR07NdMlq5zpH2UqHEl4DHtjTTTTZfnDLqla8h+rttya0E/3sIsGdLWg//XQMSpLC3nf9Wsveb7A7eLv37WLAo+LD/9wn6Pj6a3dQTbXOrfYo85v5QR36Th6VmntTi7LZENNGS5JLHUxmhabyNh9vGa3okvzxKgGdDWvp07189uTA3z4FRvmrU9dHyjm62+/itauIF9waDzd2t8x5Ggq2WwPXTNdssrRriAel7C+uiyh93vtJfuJVF2MLvlvrnTmt8D5ZKqeiwZ0dRljDF/71THq/F7e/XtrFjzulVtquf2Gdfzw2TYeOtyd9HX7Ria5MDrlaCpZVVkRHpdoLnqWOdodYkNNGYWexEPQxlpfQkMuqVryHyu6hqInzR0JDejqMo8e62Vf2xAffeXGJasdfvK1m6ktL+KBg11JX3d2OzAHxzbdLqG23Ku56FnmaFcw6SGPTbVlnB0YY3Im/iG/VC75j+UtcFNRUkBPmncu0oCuLhGJGL72q+M0V5bw/+1uXPL4AreLXU0VHGgfSvraR1M0tlkf8NKpPfSsMTw2TefwBFuS/I97U62PcMQsa2I+lUv+57JSF3VSVGXQLw91c6QryMdfvZGCOKvf7Wjyc25gjKGxqaSufbQ7RJ3fS6CkMKnzzFXn19Wi2eRotzP/cV/MdIl/YjSVS/7nqsnAzkUa0NUlvvXICTbVlnHzVfFXv9vZaBVWOtie3GYSrQ78Gj6fuoCX7uEJIhFdXJQNnCq+tq66FJcsbzu6VC/5j7W6PP3L/zWgq1m9oQmO9YR4++6mZU0YbWu09u88cD7xYZepmQgne53f3xGg3l/MVDhC/2j6l2Kryx3tDrGqtJCaJIuveQvctFSWLmtiNNVL/mPVlnvpC00yk2Td9uVIKqCLyH8XkcMickhE7hERr1MNU+n3fJsVkHetqVjW+8q9BayrLuVAEj30U30jzERM0uOq85nNRdfFRVmhtTvEltW+hJb8z7WxtmxZRbpSveQ/Vm25l4iBgdHkhiKXI+GALiINwMeA3caYbYAbeKdTDVPpt69tiAK3tRfncu1sDHCgfSjh2hXRcdVEl4IvJpqLrouLMi8cMRzvdm6twaZaH2cHRuNa3JaOJf+xZhcXpXH+JtkhFw9QLCIeoARwvriHSpv9bYNcWe9PaGPmHY1++kKTCa+Ma+0KUehxbsl/rGgPXZf/Z17bhTHGp8OOjWFvrPURMXC6b+lMl3Qs+Y+VicVFCQd0Y0wH8DWgDegCho0xDznVMJVeM+EIB9uHl7VzTKwdTdb7DpxPbNiltSvIptqyuPeVXI5VpYUUeVzaQ88C0dTUKxzroVsrTU/0Lj2O3upQdk28Zuu5hNI3d5PMkEsFcAuwFqgHSkXkv81z3G0iskdE9vT19SXeUpVSR7tDjE+Hlz1+HnVlXTkel3AwwXz0ow7+Gj6XiFDn9+ry/yzQ2h3CJdbYtxPWVpXidklcE6OtXalf8h+rsqwIt0vSulo0me7Qq4Ezxpg+Y8w0cB/wkrkHGWPuMMbsNsbsrq6uTuJyKpX22xkqu5oS66F7C9xsqfMltMCof2SSvtBkSntOVl107aFn2tGuIGurShMa1ptPkcdNS2VJXLnoR7tCbErxkv9YbpdQXZbe1MVkAnobcK2IlIg1Xf0qoNWZZql02982SFVZEY0VxQmfY0djgIPtw8vO944u9nCqBvp86gK6/D8bHO0OOZ7JtKnWt2QuujGG1u4gV6ZpQjSqtrworRUXkxlDfxb4CbAPeME+1x0OtUul2f62Ia5eE0gqlWxnY4DQxMyyNx2IZrhsTmEPvd5fTE9wIq05wepSoYlp2i6MOZ7JtLHWx7kLY4tmuvQEJxkam07LCtFYteVeetO4/D+pGShjzF8bY7YYY7YZY95jjNGVGzlocHSKM/2jCY+fR+1oshcYLXPYpbUrRI2viMqy5BaaLKYuYOUE96ZxgkpdKjrO7XRQ3VRbhjHWWoaFOLU6dblqy7250UNXK8fz0fHzBDNcojZUl1Fc4F52pktrVzAlC4pi1fs1Fz3TZqtpOrRfbNSmWqvHv9gCo9Y0/BY4n9V+L8Pj0ynbVH0uDeiKfW2DuF3CDnsJf6I8bhfbG/zLynSZDkeX/Kf2B60uoLnomXa0O4jP66He7+yC8pbKUjxLZLq0dllL/v3FqV/yHyta3iBdwy4a0BX724bYstpHSeHlOxMt145GP4c7g0zHOVYd3VvSqbzkhdRpDz3jjnaFuGJ1uSNL/mNFF6QtlulytCuYthWisdK9FZ0G9DwXjhiePz+U9HBL1I6mAJMzEY51x1cwqTVN1e/KvR7KijzaQ8+Q6MYSqfp33lTrW3Bx0cR0mNP9o2kfPwdryAXSt1pUA3qeO9k7wsjkDLuakpsQjYqW0o13YrS1K0SBW1hX5cxCk4VEFxdpDz0z2gfHGZmcSVmWycbaMquswNTlY9Une0cIR0zaM1wAan0a0FUa7W8bBODqZmcCetOqYipKCjgY58To0e4gG2p8Se0tGa+6gG50kSlH7d/YUtlDXyjT5chshkv6h1zKiz14C1xpC+jJD5qqnLa/bYhASQEtlSWOnE9E2G5XXoxHa1eQ69dXOXLtpdT7vRzpDKblWupS0Roum2tTFdCt3/A+ePceCj0upsMRpsOGmUiEsckw3gJX2pb8xxIRO3UxPZOiGtDz3P7zg+xqSm5B0Vw7G/38w6N9jE3NLDrRemF0ip7gZFp2jwFrYrR/ZJLJmTBFHmeWnqv4tHYHaa4sobQoNSFnXVUZt76khf6RSQrcLjwuocDjosAlFLhd7GgKpG3J/1y1adyKTgN6HgtOTHOid4Q376h39Lw7GgNEDBzuDPKillULHndxb8n0jG1GUxd7hidZ49BvJCo+R7tCKa3V43IJn7t5a8rOn4zacm/CReuWS8fQ89iB80MYs/wdipYyu2J0iS3pojVc0pV9EF1c1KkTo2k1PhXmzMBoRiYls0GtzyrQlejmL8uhAT2P7W8bQgSuakpuQdFcNT4v9X7vklvStXYFqSorpDrJvSXjFe2ha6ZLeh3vCWFMZiYls8Fqv5eJ6QjBiZmUX0sDeh7b1zbIphofvhRsmGtVXlyih57CGujzme2hay56Ws1uL5iBPPBsUJPGnYs0oOcpYwz725xbUDTXjiY/5wbGGBqbf4PcmXCE4z2pHVedq7jQTaCkgE6ti55WrV0hSgrdNFXk57xFOrei04Cep870jzI8Pp2ygH5xgdH8wy5nB0aZnImkvddW59dc9HQ72h1k82ofrgxlmWTahpoyvvTWbayvTu3iOdCAnrf2tUUrLDo7IRq1zS70dXCBidFo5b10pSxG1fu92kNPo9kl/2mucphNVpUW8u7fa6Y+kPjmMfHSgJ6n9rcN4ivysCFFvYZybwHrqksX7KEf7Q7idgkbalLfa4mlOxelV3B8hqGx6ZSXdlAWDeh5an/bEDvXBFL6a/DOxgDPnb3Ad584zdOnBhgen559rbUrxPrq0rQv8KnzFzM8Ps3YVOozDhS0D40B0JDE1oYqfrqwKA+NTs5wtDvIR16xIaXXefPOep482c8Xf35xq9k1q0rYWl/OvrZBbtyU/k3D62Pqoqf7t4N81DFoDW81pGG4QWlAz0sH24eJGNjlUEGuhbxicw2/++yr6QtNcrhzmMOdQY50BjncOczQ2DTXrqtM6fXnE1sXXQN66nXY8xXaQ08PDeh56HCnNa69o8HZBUULqfYV8fLNNbx8c83sc1MzkbRUWJxrdis6zUVPi47BcbwFLipLCzPdlLygY+h56NzAGOVeD6sy+EOWiWAOUOu3VqXq8v/0aB8cpyFQ7PguRWp+GtDz0NmBUVqqSvPyh6zI46aqrEh76GnSMTROQ54uKMoEDeh56NzAWEZqQ2eL+oBXe+hp0jE0rhOiaaQBPc9MzURoHxxjbR6Xj7W2otMeeqqNTc1wYXSKRp0QTRsN6HmmfXCMiCHPe+jFdA2Np6WcaT6LrsjVgJ4+GtDzzLkBa6FHS1X+9tDr/cWMToXTUs40n53XHPS004CeZ870jwLQksc9dK2Lnh6zi4q0h542GtDzzLmBUXxFmU1ZzLQ6zUVPi46hcTwuocbnzXRT8kZSAV1EAiLyExE5KiKtInKdUw1TqXF2YIzmqpK8TFmMml3+rz30lOoYHKc+UJyxzZnzUbIrRb8JPGiMeZuIFAL5OzCbI84NjLI1TStEs1WNz4vbJdpDT7H2wTEdP0+zhHvoIlIO3ADcCWCMmTLGpGdra5WQ6XCE84PjrM3j8XMAt0uo9RVpDz3FrEVFGtDTKZkhl3VAH3CXiOwXke+KSH5HiizXMThOOGJozuMc9Ki6QLH20FNoaiZCb2hSe+hplkxA9wBXA/9kjNkFjAJ/NvcgEblNRPaIyJ6+vr4kLqeSdXbAznCp0v936wPFs5UAlfO6hscxRjNc0i2ZgN4OtBtjnrW//glWgL+EMeYOY8xuY8zu6ur0179WF53VlMVZa1YV0zk0znQ4kummrEjRlEVdVJReCQd0Y0w3cF5ENttPvQo44kirVEqcHRijtNBNVVn+pixGNVeWMhMxs4FHOas9GtADOryXTslmuXwU+KGd4XIaeF/yTVKpcm5glObK/KyyONdae9gpWnlSOat9aBwRWO3XHPR0SiqgG2OeB3Y71BaVYmcHxriiLn93X48VnRiOlkJQzuoYHKfW581Y3ft8pZ92npgJRzh/YUzHz23VZUWUFLpnJ4qVszqGxnRCNAM0oOeJzqEJZiJGA7pNRGiuLNUeeop0DI3rhGgGaEDPE9GeqOagX9RSWaI99BQIRwxdQxOag54BGtDzRDRwrdUJwFktVaWcvzDGjKYuOqonaP02qEMu6acBPU+c7R+juMBNta8o003JGi2VJUyHje5e5LDogi3toaefBvQ8YaUs5neVxbmiuzbpsIuzLi4q0uG9dNOAnifODIzqhOgcLbMBXSdGnaQ99MzRgJ4HwhFjpSzq+PklanxFeAtcnOvXHrqT2gfHqCwtpLjQnemm5B0N6HnAqlliaNEMl0u4XELzqlIdcnFY+6CWzc0UDeh5IJpr3axDLpdpqSrRIReHdQyN63BLhmhAzwNnZsvmag99rpbKUtoGxghHTKabsiIYYxU800VFmaEBPQ+c6x/FW+CiVjfrvUxzZSlT4QjdQU1ddEL/yBSTMxHtoWeIBvQ8cHZgjOZVpbh0s97LROcVdGLUGbMZLpqymBEa0PPAWTsHXV2u2c78OaMTo46I5qBrDz0zNKCvcOGIoW1gTJf8L6Cu3CrxqkW6nNExZH2OmuWSGRrQV7ju4ART4YhmuCzASl0smd2eTyWnY3Acn9eDv7gg003JSxrQV7iL+4jqkMtCtIyuc9oHNWUxkzSgr3CzZXN1yGVBLZUlnLswSkRTF5OmddAzSwP6CnduYIxCj4u6ck1ZXEhzVSkT0xF6Q5OZbkrO69AeekZpQF/hzvaP0ryqRFMWFxEdjjqj4+hJGR6fJjQ5o1UWM0gD+gpnpSzqcMtiolUXz2nqYlJmUxZ1yCVjNKCvYJGI4dzAGGt1yf+i6gPFFLhFa7okqX3QTlnUIZeM0YC+gvWEJpic0ZTFpbhdQtOqEu2hJ+niKlEN6JmiAX0FOzObsqgBfSktlaXaQ09Sx+A43gIXlaWFmW5K3tKAvoJdLJurQy5Laa60eujGaOpioqJlc3Wbw8zRgL6CnR0YpdDtol7HNJe0tqqUsakwfZq6mLCOoXEtypVhGtBXsHP9YzStKsatKYtLatb9RZOmq0QzTwP6CnZWN4aOWzQXXbejS8zY1AwXRqd0lWiGJR3QRcQtIvtF5AEnGqScEY4YTvePapXFODUEivG4RDNdEtRpZ7hoQM8sJ3rofwK0OnAe5aD2wTGmZiJsrC3LdFNygsftorGimLP9OuSSiHatg54VkgroItIIvBH4rjPNUU450TMCwIYaX4ZbkjuaK0t1yCVB7bpKNCsk20P/BvBpIOJAW5SDTvZFA7r20OO1tsoqo6upi8t3us/at7ZG963NqIQDuoi8Ceg1xuxd4rjbRGSPiOzp6+tL9HJqmU72jlDtK9KNBpahubKEkckZBkanMt2UnHOiN8SmWp9mVGVYMj3064GbReQs8G/AK0XkX+YeZIy5wxiz2xizu7q6OonLqeU40TvCRu2dL4sW6UrcsW4roKvMSjigG2P+3BjTaIxpAd4J/Jcx5r851jKVMGMMp3pHdLhlmaIranVidHkGR6foDU2yWQN6xmke+grUHZxgZHJGe+gPWD+eAAAYcElEQVTL1FhRgks0F325jveEANi0WgN6pnmcOIkx5jHgMSfOpZJ3steaEF2vAX1ZCj0uGitKdLXoMkUDuvbQM0976CtQNGVxo6YsLlu0SJeK37GeEOVeD7XlRZluSt7TgL4CnewbwV9cQFWZljFdrpbKUs70a9XF5TjePcLm1T6tspgFNKCvQCd7rAwX/QFbvubKEkITMwyNTWe6KTnBGMOxHs1wyRYa0Fegk32a4ZKoaOriGR12iUtvaJLh8Wk264RoVtCAvsIMjExyYXRKA3qC1lZbAT06sawWd6zbznDRHnpW0IC+wkQDkQb0xLRUllJa6OZwx3Cmm5ITZlMWNaBnBQ3oK4zWcEmO2yVsbfBzUAN6XI51h6j2FbFK9xHNCjkR0Cdnwpzu01+B43GiZ4SSQjf1fq16l6gdDX6OdAaZDmvNuaUc7wlp/nkWyYmA/j/uO8Tbv/O0ppLF4VTfCOury3BpkaSEbW/0MzkTmc3nV/OLRAzHe0Z0uCWL5ERA37UmQP/IFOcvjGe6KVnvRI8W5UrWjsYAAC90DGW4JdmtfXCc8ekwm3QTlayREwH96jUVAOxrG8xwS7JbaGKa7uCELvlPUvOqEnxeDwfbdRx9Mce0hkvWyYmAvnm1j9JCtwb0JUQzXLSHnhyXS9je4OcFnRhdVDTDRb/fskdOBHS3S7iqKaABfQmasuic7Y1+WruCTM6EM92UrHWsO0RDoBifVzdRyRY5EdDBGnZp7QoxNjWT6aZkrZO9IxS6XaxZVZLppuS8HQ0BpsOG4906MbqQ4z0hXSGaZXInoDcHCEeMjmsu4mTvCGurSvG4c+afNWvtaPQDcFAnRuc1HY5wqk8zXLJNzvzk72qyJkb3ntNhl4Wc0F2KHNNYUUygpIAXtAMxr7P9o0yHDZtX6/dbNsmZgF5RWsi6qlL26zj6vCamw5wfHNOA7hARa2JUfyOc3zFd8p+VciagA+xaU8G+tiFdYDSP032jGKMTok7a0ejneE+IiWmdGJ3reHcIl8D6av1+yyY5FdCvbg5wYXSKc7pF2GVO9NopZLrIwzHbGwLMRAytXcFMNyXrHOsJ0VJVirfAnemmqBi5FdB1gdGCTvWO4BJYW1Wa6aasGNGJUc1Hv9zxnhGt4ZKFciqgb6r1UVbk0YA+jxO9I6xZVUKRR3tMTqnze6kqK9Rx9DkmpsOcHRjV8fMslFMB3Vpg5GffOU0lm+tk7wgbdFNoR0UnRjXT5VIne0cwBs1Bz0I5FdABrllTwdHuIKOTusAoajoc4Uz/qE6IpsD2xgAnenVBWyzdpSh75VxA39VcQcTAgXbtpUedGxhjJmK0pkYK7GjwEzFwpFMnRqOO94QodLtoqdQVydkm5wL61fYCo/1tGtCjTtoZLtpDd9726IpRHXaZdawnxPqaMl2RnIVy7l/EX1LA+upS9umK0VnRolxaNtd5teVeanxFmukS43h3iM2aHpuVci6gg5W+uK9tUBcY2U70jlDv91JW5Ml0U1akHY1+DuoQHwDBiWk6hye0BnqWys2A3lzB4Ng0Z/pHM92UrHCyd4QNOkGVMtsbApzuHyU0MZ3ppmTcCXvJv+agZ6eEA7qINInIoyLSKiKHReRPnGzYYi4uMNJeUyRiONU3wgZdgp0yOxr9GAOHdWKUY3Y5Yc1wyU7J9NBngE8YY64ArgX+WESudKZZi9tYU4ZPFxgB0DE0zsR0RCdEU2hbg71iVCdGOd4TorTQTUOgONNNUfNIOKAbY7qMMfvsxyGgFWhwqmGLcbmEnWsCOjHKxZxgreGSOtW+Iur9Xp0Yxfp+21jrw+WSTDdFzcORMXQRaQF2Ac86cb547FpTwfGeECN5vsDovv3tlHs9bK0vz3RTVrTtjbrH6MR0mMOdwzp+nsWSDugiUgb8FPi4MeayQUYRuU1E9ojInr6+vmQvN+vqNQFrgdH5/B1HP39hjAcPdfOu31tDSaFmuKTSjsYAZ/pHGR7P34nRe/e2E5yY4ZZd9ZluilpAUgFdRAqwgvkPjTH3zXeMMeYOY8xuY8zu6urqZC53iegORvk87PL9p84iIrz3upZMN2XF226Pox/O0176TDjCd35zil1rAly3rjLTzVELSCbLRYA7gVZjzNeda1J8/CUFbKwpy9uJ0dDEND967jxv2F5HvU5QpVw0oB/M04D+nwc7aR8c58Mv34D1o6+yUTI99OuB9wCvFJHn7T9vcKhdcbl6TQX7z+fnDkY/3tPOyOQMH3jp2kw3JS9UlBbStKo4LzNdIhHDPz12is21Pl61pSbTzVGLSCbL5UljjBhjdhhjdtp/fuFk45ZydXOAobFpTufZAqNwxPD9p86wu7mCnU2BTDcnb7y4pZJHj/XSNTye6aak1a9bezjeM8IfvXy9ZrdkuZxcKRp1TbM1jv7goe4MtyS9Hj7SzfkL49o7T7OPv3oj4Yjhiw+0ZropaWOM4duPnaJpVTFv2lGX6eaoJeR0QF9fXcZrrqzlm4+cmM3Hzgd3PnmGxopibtq6OtNNyStNq0r4yCs28PMXunj8uHMZW9ns6dMDPH9+iNtvWK/VFXNATv8LiQh/+/vbKfd6+PiPnmdqJpLpJqXcgfNDPHd2kFtf0oJbf/1Nuz+8YR0tlSV87v7DTM6EM92clPv2o6eo9hXxtmsaM90UFYecDugAVWVFfPn3d9DaFeQbvz6e6eak3J1PnqGsyMM7XtSU6abkJW+Bm8/fso3T/aN894kzmW5OSh04P8STJ/v54EvX4i3QvWpzQc4HdIBXX1nLO3Y38c+/OcWesxcy3ZyU6Roe5xcvdPGOFzXh8xZkujl568ZN1bx+22r+/r9OcP7CWKabkzLffuwk5V4P7762OdNNUXFaEQEd4C/ffCUNFcX86Y8PrNhyAHc/dY6IMdz6kpZMNyXv/eWbrkQQvvDAkUw3JSVO9IT41eEe3vuSFq2zn0NWTEAvK/Lw9bfv5PzgGF/6+cr7IRubmuGe37Xx2q2raVqlezlmWn2gmI+9aiMPHenh0aO9jp23JzjBB+/ewyfvPZDROaF/+s0pigvcvO96zaTKJSsmoAO8qGUVt9+wnnt+d55HWnsy3RxH/XRvO8Pj05qqmEU+8NK1rK8u5a/vP8zEdPITpI8e6+X133yCx0/08ZO97dz+gz2OnHc5IhHDM6cHuP/5Tt754iZWlRam9foqOSsqoAP899dsZMtqH5/56UEGRiYz3Zyknekf5S/+4wW++PNWrmoKzObeq8wr9Lj4wi3baLswxj//5lTC55maifDFB47wvrueo8ZXxC8+9lL+5q3beex4H++767mUDyFOzUT4zfE+PvvvL3Ddlx/hnXc8Q0mhmz982bqUXlc5b8UNjhV53HzjnTu5+e9/y613PccbttexsynAjkY/pfOMBRpjaB8c51DHMIc6hxkcm8ZX5KGsyEOZ1/rb5/XgLy7k6uYARZ70zPbvPXeBOx4/zUNHeihwuXjrrgY+9uqNWkcjy7xkQxVvvqqebz92iiKPm9dtW83aqtK433+2f5SP/dt+DrYP855rm/nsG6/AW+BmQ42PkkI3n7j3AO+581m+f+uL8Zc4MxEeiRjODozy/PkhHj3Wx2NHewlNzlBc4ObGTdXctLWWV26pIVCivfNcI+msg7J7926zZ8+etFzrvn3tfOuRE5wdsLIQXGJtm7VrTYAr6srpGBznUOcwhzqCsyVR3S4hUFzAyOQMk/OMX1aUFPDWXY2840VNbE7BJrljUzP85lgf/+eJ0+xrG8JfXMB7rm3mD17STI3P6/j1lDN6gxN86F/2zm6JuLnWx2u3rea1W2u5sq78sv+Ep8MRhsamefx4H3/1s0O4XcJX3nYVr9t2+UKxBw9187F79rOhpowffODFVJYVLbt9PcEJDpwf4kD7EAfOD3OgfYjQhNXrryor5FVbarlpay3Xb6jS9MQsJSJ7jTG7lzxupQb0qAujUxw4P8T+80PsbxvkwPkhghMzFLpdbF7tY1tDOVvr/Wxv8LN5tW/2G3o6HGF0cobQxAwjkzN0DI7z7/s7eOhIN9Nhw641Ad6xu4k3XVWfcBZA1/A4e84Osvec9edIV5BwxNC0qpgPXL+Wt7+oSeuc55COoXEeOtzNg4e6ee7sBSIGmlYVs6G6jMGxaQbHprgwOjUbTAF2N1fwzXftWnRLt98c7+P2H+yhIVDMDz94Lav9C//nPjAyyQsdwxxst/680DFET9AaenS7hC2rfVzVFGBnY4AdTX421vh0gVoO0IC+gEjE0BWcoLqsiELP8qcQBkYm+ff9HfzoufOc6B2hpNDNjkY/rmUMhRgD5wZG6RyeAKC4wM1VTX52N69id0sFL91Qpcusc9zAyCS/bu3hV4d76A1NUFFSyKrSQipKCu3HBdSWe3nllpq4/q2fPT3AB+7eQ0mhe979Y42BtgtjdAxZhcNEYF1VKTsaA2xv8HNVU4Ct9eXaA89RGtBTzBjDvrYhfvzceU73jyz7/TXlXnY3V3BNcwVX1JVToAFcLeHA+SG+9tCxBTNfasq9XNXoZ3tDgG0N5br4bAXRgK6UUitEvAFdu4VKKbVCaEBXSqkVQgO6UkqtEBrQlVJqhdCArpRSK4QGdKWUWiE0oCul1AqhAV0ppVaItC4sEpE+4FyCb68C+h1sTi7Sz0A/g3y/f8jPz6DZGFO91EFpDejJEJE98ayUWsn0M9DPIN/vH/QzWIwOuSil1AqhAV0ppVaIXArod2S6AVlAPwP9DPL9/kE/gwXlzBi6UkqpxeVSD10ppdQiNKArpdQK4XhAF5FiEfmNiLhFpEVExkXk+Zg/C24lLiIvF5EHHG7PWhF5VkROiMiPotcXkY+IyPscvE623fdHROSkiBgRqYp5XkTkW/ZrB0Xkavv5ahF5MInrZdv9/1BEjonIIRH5nogU2M+n5P4XaUf0c7kq5rO4ICJn7Me/dvqa87Rhp4g8IyKHReSFmM/iERHxp+iaGb1vEakRkcdEZFREvjHntSIR+a79/XFURN5iP/9xEXlPKtuVcsYYR/8Afwz8if24BTi0jPe+HHjA4fb8GHin/fifgT+yH5cA+1fwfe+y23EWqIp5/g3ALwEBrgWejXntLuD6FXL/b7DvUYB7Yv7dU3L/8XwuMc99H3jbAsd7HL5+AfACsN3+ugpw2Y8/AHzGyetl0X2XAdcDHwG+Mee1LwGfsx+7gMqY9+xLxeeRrj+pGHJ5N/CzxQ4QkReLyFMist/+e/M8x9wY8z/7fhHx2c9/SkSes3tXn1/iOgK8EviJ/dTdwFsAjDFjwFkRefHyb3FeWXPfAMaY/caYs/O8dAvwf43lGSAgInX2a/9h30cisu3+f2HfowF+BzTaL6Xq/hcSz+fyahH5tYj8G7BfRDaIyPMxr/+ZiPyF/XijiPxKRPaKyOMismmJ678e2GuMeQHAGNNvjInYr/0M+P8TvbElZPS+jTEjxpjfAhPzvHwr8Hf2cRFjzED0PUBH9Le2XORoQLd/rV43J5Csj/kB/Uf7uaPADcaYXcBfAX8zz+k+CfyxMWYn8DJgXERuAjYCLwZ2AteIyA2LNKkSGDLGzNhftwMNMa/vsc+dlCy878U0AOdjvo79TBL6PLL5/u3hhfcA0eEUx+9/kWvP97ks5Frg08aY7UscdwfwYWPMNcCfA/+wxPGbrKbIQyKyT0Q+EX3BGNMP+EQkEEf74pYl971Q26qAKeBv7c/jRyISu6Te0e+BdPM4fL4qYGjOc6fsH85YfuBuEdkIGKxfC+f6LfB1EfkhcJ8xpt3+wb4J2G8fU4b1g/74Au2ReZ6LzdPsBbYsdDPLkG33vZjFPpNeoD6Bc2bz/X8beNwY84T9dSrufyHzfS4LedoY07bYAXbgvRb4qfXLJ7D0z7AHa+jh97B6q4+KtXT+N/brfUDdMtoZj2y474V4sIYEHzXGfFxEPg18BYjOp/Xar+ckpwP6OOCN47gvYH2gbxWRFuCxuQcYY74sIj/HGvN8RkRejfXD+LfGmO/E2Z5+rF+pPXYvvRHojHnda7c5Wdl234tpB5pivo79TBL9PLLy/kXkr4Fq4PaYp1Nx/wuJ93MBGI15PMOlvz177ecE6J/nP8rFtAOPRYcVROSXwNVANKA7fc+QHfe9kF5gDLjf/vperKG22Gs6/XmkjaNDLsaYQcAtIkv9Y/qBDvvxrfMdICLrjTEvGGP+DuvXoC3Ar4D3i0iZfUyDiNTYjx8RkdjhFOzx00eBt9lPvZdLx/U2AYfivL0FZdt9L+F+4A/Eci0wbIzpsl9L6PPIxvsXkQ8CrwXeFTNmDCm4/4Us43OZqxuoF5EK+71vjDlfl4i8FUBEXCJylf34bSLyhXnO9Utgl1hZJx7gBuBI9P1Yvenz87wvYVly3wu1LYL1mUSHVV6F/XnYHP0eSLdUTIo+BLx0iWO+gjWG9VvAvcAxHxcr5ewA1v+YvzTGPAT8K/C0iLyANdnps78xNwAX5jnPZ4A/FZGTWGPqd8a8dj3gVPpUVt23iHxMRNqxeqAHReS79ku/AE4DJ4H/A3w45m2vAH6+9K3OK6vuHyujqdZ+z/Mi8lf286m6/4XE87lcwhgzgTW/8BzWf0CxAeedwIfsz+cw8Cb7+Q1AcJ5zDQDfAvYCzwPPGGN+Zb/8YuBJY0x4Oe2LU0bvG8D+/v8K8AERaZeLk/CfAr4kIgft83465m3XAY8sp91Zxem0Gax0uR84fd4lrrkN+Hom25kr973E+R4HKvT+HW1jWj4XrNTMymW+5x+BG1PUnqy970XO9SLgrlS3OZV/UlLLRUTeD9xtUvM/vyNE5DXACRPfTHy858z6+16IPdN/vTHmP5Y8eOFz5PX9L3LurPxcROSDxpjvLn1kwufPyvteiIi8Fmg1S0zSZjMtzqWUUiuE1nJRSqkVQgO6UkqtEBrQlVJqhdCArrKKWBXyHN8AWETOSkzVyVQSkYCIfHjpIy973+dE5JMJvO8tInLlct+nVh4N6Eotwl6Ms1wBLs1vT7W3ABrQlQZ0lRwR+bSIfMx+/L9F5L/sx68SkX8RkZtE5GmxCiHdG7Pa8xqx6mXvFauKXt2c87pE5G4R+aL99ULnOSsin7eff0FEttjPV4pVkGq/iHyH+Wu4ICKvs997QEQesZ/7nIjcISIPAf9XrBrvX5WL1R5vt48rs1eqRq99i33aL3OxONlX7WPnrRYpIp8Vqy73r4HLqk/Oaesf2uc4ICI/FZESEXkJcDPwVft66+P+x1MrT6YT4fVPbv/BKpp0r/34CaxStQXAX2Ot0n0cKLVf/wxWlcUC4Cmg2n7+HcD37MeP2ee8B/is/VzVfOexH58FPmo//jDwXfvxt2KOeSNWAa6qOW2vxlr2vtb+epX99+ewVlYW21/fBvyF/bgIqyTBWqxaSOUxbTyJ9R9HCzH14LEKi91hv+YCHsBagn8NVq3yEqDcfv8nF/msK2MefzHmvr/PAnXG9U9+/XG6OJfKP3uxytn6gElgH7Abq1bG/VhDAb8Vq0peIfA0Vk90G/Cw/bwb6Io553eAHxtjvmR/fe0C54m6L6Ytv28/viH62BjzcxEZnKft12JVYjxjHxdbQuB+Y0y0SNNNwA4RidYE8mNVe2wH/kasUr4RrDK8tfNcZ6FqkT7g341Vmx8RuX+e98baZv/GErDP8asljld5RgO6SooxZlpEzmKVH30KOIhVE2U9cAZ42Bjzrtj3iMh24LAx5roFTvsU8AoR+V/Gqu8h850nxqT9d5hLv6eXWjUnixwzOue4j5qLNVCsJ0VuxerlXxPzOcxXkGreapEi8vE42hjr+8BbjDEH7Gu/fBnvVXlAx9CVEx7H2pjicaxhlw9hF4ICrheRDQD2mO8m4BhQLSLX2c8XiMjWmPPdiVVE6157UnKh8yzVpnfbx78eqIi+IBcrND4N3Cgia+3nVy1wrl8BfyQX9+LcJCKlWD31XjuYvwJoto8PYfW+Y98/X7XIx4G3ilUJ0Qe8eYl78mFVHSzg0p2V5l5P5SkN6MoJT2BtkvC0MaYHayOFJ4wxfVhlcu8Rq7LdM8AWY8wUVknjvxOret7zwEtiT2iM+TrW8M0PgIH5zrNEmz4P3CAi+7CGO9pgtmTsBuCC3b7bgPvsdvxogXN9F6vy3z4ROYQ1JOQBfgjsFpE9WAH2qN32AazhoUMi8lWzQLVIY8w++5rPAz+1P8fF/CXwLPBw9Fq2fwM+ZU8A66RoHtNaLiqviMg24P3GmD/NdFuUcpoGdKWUWiF0UlSpLCPWptrXz3n6m8aYuzLRHpU7tIeulFIrhE6KKqXUCqEBXSmlVggN6EoptUJoQFdKqRVCA7pSSq0Q/w+ignHU5orAXwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 周末调用平均次数多，7.57，  \n",
    "# 周末哪个时段调用次数比较高\n",
    "\n",
    "log_weeklygroup = log.groupby(['weekend', log.index.hour])['count'].mean()\n",
    "log_weeklygroup.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>weekend</th>\n",
       "      <th>False</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>created_at</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.239120</td>\n",
       "      <td>3.467782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.668388</td>\n",
       "      <td>1.741849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.162551</td>\n",
       "      <td>1.161826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.086705</td>\n",
       "      <td>1.050000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.155556</td>\n",
       "      <td>1.076923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.136364</td>\n",
       "      <td>1.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.071429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1.080000</td>\n",
       "      <td>1.144928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1.239011</td>\n",
       "      <td>1.254111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2.031690</td>\n",
       "      <td>1.992958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>4.195845</td>\n",
       "      <td>4.031889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>6.668042</td>\n",
       "      <td>6.905772</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>8.260503</td>\n",
       "      <td>8.851321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>8.934448</td>\n",
       "      <td>9.858422</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>8.466504</td>\n",
       "      <td>9.420550</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>6.784996</td>\n",
       "      <td>7.334743</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>6.717731</td>\n",
       "      <td>7.342150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>8.655913</td>\n",
       "      <td>9.270430</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>10.536496</td>\n",
       "      <td>11.173609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>10.846906</td>\n",
       "      <td>11.695043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>9.034164</td>\n",
       "      <td>10.419916</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>5.946834</td>\n",
       "      <td>7.025452</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "weekend         False      True \n",
       "created_at                      \n",
       "0            3.239120   3.467782\n",
       "1            1.668388   1.741849\n",
       "2            1.162551   1.161826\n",
       "3            1.086705   1.050000\n",
       "4            1.155556   1.076923\n",
       "5            1.136364   1.333333\n",
       "6            1.000000   1.000000\n",
       "7            1.000000   1.000000\n",
       "8            1.000000   1.071429\n",
       "9            1.080000   1.144928\n",
       "10           1.239011   1.254111\n",
       "11           2.031690   1.992958\n",
       "12           4.195845   4.031889\n",
       "13           6.668042   6.905772\n",
       "14           8.260503   8.851321\n",
       "15           8.934448   9.858422\n",
       "16           8.466504   9.420550\n",
       "17           6.784996   7.334743\n",
       "18           6.717731   7.342150\n",
       "19           8.655913   9.270430\n",
       "20          10.536496  11.173609\n",
       "21          10.846906  11.695043\n",
       "22           9.034164  10.419916\n",
       "23           5.946834   7.025452"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 周末和非周末数据叠加\n",
    "log.groupby(['weekend', log.index.hour])['count'].mean().unstack(level = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 305,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "log.groupby(['weekend', log.index.hour])['count'].mean().unstack(level = 0).plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
